sshを(改めて)使ってみた
忘れないように書き留めておかねば..........
ssh
OpenSSHの話などインターネットを検索すると幾らでも見つかるので、今更どうということもないのかもしれませんが、このソフトはバージョンによって結構設定方法が違っているらしく、たまにいじるとひどいめにあったりしました。
そこでここではしっかりバージョン情報を書いておきます。
- Linux SSHサーバ sshdが動いているマシンです。
- Debian GNU/Linux
- 3.0r1 (woody)
- Linux カーネル
- 2.2.19
- ssh
- 3.4p1-1
- Linux SSHクライアント その1
- Debian GNU/Linux
- 3.0r1 (woody)
- Linux カーネル
- 2.4.19
- ssh
- 3.4p1-1
- Linux SSHクライアント その2
- Debian GNU/Linux
- sid
- Linux カーネル
- 2.4.20
- ssh
- 3.6.1p2-3
- Windows PuTTY
- Release 0.53b
鍵の生成などは他の資料に任せ、ここでは上記の環境でどう設定されているかをまず示します。全体の方針として、
- SSH2を使い、SSH1は使用不可とする。
- RSAを使う。
- 特定のユーザしか使えないようにする。
- ポートも変更する。
こととします。
Linux SSHサーバ
- /etc/ssh/sshd_config
上記の方針により、
- #Port 22 は、Port xxxx へ変更します。
- Protocol 2 でSSH2のみ受け付けます。
- HostKey /etc/ssh/ssh_host_rsa_key でRSAを指定。
- AllowUsers hoge とユーザを限定。
- 不要な認証方法は不可にしておきました。
- RhostsRSAAuthentication no
- HostbasedAuthentication no
- PermitEmptyPasswords no
- ChallengeResponseAuthentication no
- PasswordAuthentication no
クライアントの公開鍵を予めログインするユーザのホームディレクトリの下に.sshディレクトリを作り、その中にauthorized_keysという ファイル名で登録しておきます。
Linux SSHクライアント
- サーバで接続を許されているユーザ名のホームディレクトリの下に、.sshディレクトリを作り、ssh-keygen -t rsa で生成した秘密鍵と公開鍵、それにknown_hostsが入っています。
/etc/ssh/ssh_configか、ホームディレクトリの下の.sshディレクトリのconfigを上記の方針に沿って変更します。- Port 22を変更する
- Protocol 2,1を2のみにする
- RSAAuthentication を yes にする
$>ssh sshdが動いているサーバ名
で、サーバへ接続します。初めてつなごうとしたときは「つなごうとしているサーバがホントにつなぎたいサーバだと信じますか?」みたいな 意味のメッセージが表示されてフィンガープリントが表示されます。ここは、サーバの方も自分で作ったので信じるしかありません。yesを 応答すると、クライアント側の.sshディレクトリにknown_hostsができてそのサーバが登録されます。
認証されれば、サーバ側のプロンプトが出て、あとはtelnetと同じです。
Windows Putty
- PuttyはSSH2しか使えません。日本語を使う必要がないので英語版のまま使っていますが、日本語化のパッチもあります。
PuTTYにはPuTTY Key Generatorが付いているので、これで秘密鍵と公開鍵を生成できます。
PuTTYを起動するとConfigurationのウィンドウが表示されます。設定を要するのは上記の方針から、
-
- Sessionのポートを指定する、
- SSHのPreferred SSH protocol versionを 2 only にする、
- Session-AuthのAttempt "keyboard-interactive" authentication[SSH2]のチェックをはずす
- Session-AuthのPrivate key file for authenticationを指定する(これはいずれにしても必要)
といった点です。SessionのSaved sessionsの上の枠でこの設定に名前を付けてSaveします。
実際に使う場合は、Puttyを起動して、このSaved sessionsの一覧から対象を選択しLoadを押します。
login as:が出たら、ユーザ名を入力します。そうすると、passphrase for key が出るので、鍵を生成したときのパスフレーズを入力します。
うまく行かなかった時の助け船
- ssh -v sshdが動いているサーバ名 で、クライアント側からのサーバとのやりとりが表示されます。
- sshdはログを/var/log/auth.logに記録します。専用のログファイルではないので読みにくいかもしれないのですが......
ここで、おまけにZaurusでsshを使うお話を。