« Kobo: FW3.13.1でフォント詳細設定を有効化、行間、余白を調節可能にする(設定編) | トップページ | Kobo: FW3.13.1 スクリーンセーバー変更 H2Oだけでなく、glo/auraその他にも対応 »

2015年2月27日 (金)

Kobo: sshパスワード認証設定

前回の記事について、Koboのsshのパスワードの設定、telnetの無効化の方法を説明してほしいという要望があったので。

これは、mobilereadの"Yet another telnet/sshd & misc tools package..."スレッドのツールを使った場合の説明。
http://www.mobileread.com/forums/showthread.php?t=254214
トップページにこのツール固有の設定については説明がある。

作者はkindleのjailbreakパッケージを作っている人
http://www.mobileread.com/forums/showthread.php?t=225030


説明はLinuxでの操作になる。
Macはよく知らないが、ひょっとしたら似たようなものかもしれない。
Windowsでのやり方はよくわからないので、Windowsのツールにあわせて適宜読み替えて。

以下の説明は、上記のツールインスール済みで、パスワードなしでtelnetとsshでKoboにログインできていることを前提にしている。
またファイルの編集には、改行コードLF(Unix式)にできるエディタを。

手順は
1. PCでsshの公開鍵を作成(パスワードの設定)
2. 公開鍵をKoboの/usr/local/niluje/usbnet/etc/authorized_keys というファイルに書きこんで登録
3. sshの公開鍵認証の設定(パスワードなしログイン無効化)、telnetをストップ
これはstuff-daemons.shというファイルを書き換えるだけよい。

ターミナルのコマンド操作がどの程度できるかわからないので、どこまで説明したものか。
知っている人には冗長な説明になる。

では、
◎公開鍵の作成
ていねいな解説はネットにいくらでもあるので、要点のみ。
ターミナルで次のコマンド


ssh-keygen -t rsa

パスワード入力を求められる(2回)
・ホームディレクトリに、.sshというフォルダができ、その中に
 id_rsa
 id_ras.pub
というファイルができている。
id_rasa.pubが公開鍵。この内容をKoboに登録する。

◎公開鍵(id_rsa.pub)の内容をKobo端末に登録
登録する場所は、
/usr/local/niluje/usbnet/etc/authorized_keys というファイル

手順
scpで公開鍵をKoboに転送しようとしたら、なぜかうまくいかなかったので、以下のようにした。

1. KoboをUSBでPCに接続。接続したKoboに公開鍵(id_rsa.pub)をコピー。場所はKoboドライブの一番上に。

2. 以降はssh/telnetでKoboにログインして作業


ssh root@xxx.xxx.xx.xx (xxx.はKoboのIPアドレス)

ログインしたら、次のようにコマンド

cd /mnt/onboard (id_rsa.pubをコピーした場所に移動)
ls id_rsa.pub   (そこにid_rsa.pbuがあるか確認)
cat id_rsa.pub >> /usr/local/niluje/usbnet/etc/authorized_keys (書き込み)
rm id_rsa.pub  (id_rsa.pubを削除)
exit       (ログアウト)


3. 公開鍵作成時に設定したパスワードでログインできるか確認


ssh root@xxx.xxx.xx.xx

大丈夫だったら次へ。

◎sshの公開鍵認証の設定(パスワードなしのログイン禁止)、telnetをストップ
これらはすべて、/usr/local/stuff/bin/stuff-daemons.sh で設定する。エディタで編集。
一度にやってミスからsshでもtelnetでもログインできなくなったら大変なので、面倒だが一つずつ。

◯sshの公開鍵認証の設定(パスワードなしではログインできなくする)
/usr/local/stuff/bin/stuff-daemons.shから次の行を探す。


## NOTE: Comment me out if you want dropbear to actually check passwords
SSHD_OPTS="${SSHD_OPTS} -n"
## NOTE: Uncomment if you want to limit drobear to shared-key auth only
#SSHD_OPTS="${SSHD_OPTS} -s"

SSHD_OPTSの行頭#の有無を入れ替えて、下の -s オプションのほうを有効にする。

## NOTE: Comment me out if you want dropbear to actually check passwords
#SSHD_OPTS="${SSHD_OPTS} -n"
## NOTE: Uncomment if you want to limit drobear to shared-key auth only
SSHD_OPTS="${SSHD_OPTS} -s"

編集の仕方は次のどれかで。
1) Koboにログインして、エディタのviで直接stuff-daemons.shを書き換える。が、viを使ったことがない人はやめたほうがいい。直感的に操作できる代物ではないので。


ssh root@xxx.xxx.xx.xx
cp /usr/local/stuff/bin/stuff-daemons.sh /usr/local/stuff/bin/stuff-daemons.sh.orig(バックアップをとる)
vi /usr/local/stuff/bin/stuff-daemons.sh (上記のように書き換え)
reboot; exit (再起動、ログアウト)

2) scpでstuff-daemons.shをPCにコピー、PCで編集してからKoboに戻す。(scpでwarningが出たが、大丈夫だろう)


scp root@xxx.xxx.xx.xx:/usr/local/stuff/bin/stuff-daemons.sh ./

stuf-daemon.shのバックアップを取ってからPCで編集。
終わったらまたKoboに戻して、再起動。

scp stuff-daemon.sh root@xxx.xxx.xx.xx:/usr/local/stuff/bin/
ssh root@xxx.xxx.xx.xx reboot

再起動は電源スイッチでもかまわない。

3) scpがうまくいかないなら、stuff-daemons.shをUSB接続でPCからアクセスできる場所(/mnt/onboard以下)にコピーして、PCで編集する。


ssh root@xxx.xxx.xx.xx
cp /usr/local/stuff/bin/stuff-daemons.sh /mnt/onboard/
exit

USBで接続してPCで、stuff-daemons.shを上記のように編集。終わったらまた sshでログインして、元の場所に戻す。

ssh root@xxx.xxx.xx.xx
mv /mnt/onboard/stuff-daemon.sh /usr/local/stuff/bin/
reboot; exit

sshで接続、パスワードでログインできるか確認。
OKだったら、次にパスワードなしでログインしてみて、接続拒否されるか確認。
Permission denied (publickey) になるはず。


ここまでできたら、最後に

◯telnetを止める
編集方法はさっきと同じで、/usr/local/stuff/bin/stuff-daemons.shを書き換える。
変更するのは次の箇所:


# Start our own inetd for telnetd/ftpd support
## NOTE: Comment me out if you intend to use open/public WiFi!
${STUFF_BUSYBOX} start-stop-daemon -m -q -p ${INETD_PID} -x ${STUFF_BUSYBOX} -S -b -- ${INETD_OPTS}

最後の${STUFF_BUSYBOX}...{INETD_PID}...の行頭に#をつけて無効にする。

# Start our own inetd for telnetd/ftpd support
## NOTE: Comment me out if you intend to use open/public WiFi!
#{STUFF_BUSYBOX} start-stop-daemon -m -q -p ${INETD_PID} -x ${STUFF_BUSYBOX} -S -b -- ${INETD_OPTS}

最後にKoboを再起動して、設定の変更を反映させる。

確認してみる。
telnetでアクセスしてみて、接続拒否されたらOK。
telnet: Unable to connect to remote host: Connection refused


以上で、sshで設定したパスワード以外ではログインできなくなったはず。

|

« Kobo: FW3.13.1でフォント詳細設定を有効化、行間、余白を調節可能にする(設定編) | トップページ | Kobo: FW3.13.1 スクリーンセーバー変更 H2Oだけでなく、glo/auraその他にも対応 »

kobo」カテゴリの記事

コメント

詳細な解説をありがとうございます。
早速試してみましたが、途中で引っかかってしまいました。
sshの公開鍵認証の設定(パスワードなしではログインできなくする)のところで、SSHD_OPTSの設定を切り替えてからsshで接続しようとすると、passwordを聞かれずにPermission denied (publickeys)となってしまいログインできません。
それまでの手順は何度も見直しましたが間違っていないようなので、理由がわかりません。
ご教授いただければ幸いです。
よろしくお願いいたします。

投稿: | 2015年3月 1日 (日) 20時46分

kobo-stuff-1.3.N-rxxxxxを再インストールすると、設定ファイルがデフォルトに戻るので、パスワードなしでログインできるようになるはずです。

でも、原因がわからないうちに同じことを繰り返しても仕方がないので、ちょっと調べてください。

telnetではログインできますね?

telnetでログインして、
less /usr/local/stuff/bin/stuff-daemons.sh

として、stuff-daemons.shの内容をもう一度確認してください。less を終了させるには、キーボードの q です。spaceでスクリーンが進み、キーボードの k で前に戻ります。

また、同じ要領でauthorized_keysの中身を確認して、PCの.ssh/id_rsa.pubと比較してください。違っているなら公開鍵が登録できていません。
less /usr/local/niluje/usbnet/etc/authorized_keys
less ~/.ssh/id_rsa.pub

とりあえず思いつくのはこんなところでしょうか?


投稿: soranoji | 2015年3月 1日 (日) 21時28分

お返事ありがとうございます。
その後、ファイルの内容を確認しつつ再度最初からやり直してみた所、うまくいったようです。
Macを使っているのですが、ssh-keygen のところで、.sshフォルダ以外に公開鍵を生成させていました。これが問題だったらしく、.sshフォルダに生成させた公開鍵を使ったところ、無事パスワードを聞いてきてログインできました。
その後は、Macはパスワードを覚えているらしく、パスワードなしでログインできます。再起動させると再度パスワードを聞いてきました。
Linuxではどうなのでしょうか?
ともあれうまくいったようなので、次はtelnetの無効化に進んでみます。

投稿: | 2015年3月 1日 (日) 22時21分

telnet の無効化に無事成功しました。
これで安心です。
詳しい解説とアドバイスのおかげで設定を完了できました。
どうもありがとうございました。
これからも記事を楽しみにしています。
和書では追加の度にpythonでの変更が必要ですが、FW3.13.1で行間、余白の調整が可能になったのは大変大きいです。

投稿: | 2015年3月 1日 (日) 22時42分

設定できて何よりでした。
こちらも記事の内容の確認が取れて、安心できました。

パスワードですが、
sh-addというやつでパスワードは記憶できますが、たぶんそれと似たものでしょうか。これもセッションが終われば消えます。
ssh-add -L
で公開鍵が表示されれば、同じものかもしれません。


投稿: soranoji | 2015年3月 1日 (日) 23時13分

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Kobo: sshパスワード認証設定:

« Kobo: FW3.13.1でフォント詳細設定を有効化、行間、余白を調節可能にする(設定編) | トップページ | Kobo: FW3.13.1 スクリーンセーバー変更 H2Oだけでなく、glo/auraその他にも対応 »