公開鍵暗号による ssh 接続
01 October 2012
ssh でパスワードではなく、公開鍵暗号によってログインする方法。
動作の仕組み
- サーバーは接続してきたユーザーの公開鍵を
~/.ssh
ディレクトリから取り出す。 「乱数」を生成し、その乱数を公開鍵で暗号化してクライアントに送る - クライアントは、サーバーから送られてきた乱数を、秘密鍵で復号化し、サーバーに送り返す
- サーバーは自分が作った乱数と、クライアントから戻ってきた値を照合し、一致すれば正しいユーザーと判断する
設定方法
クライアント側
$ ssh-keygen -t rsa
途中でパスフレーズ入力を求められる。 パスフレーズは秘密鍵を取り出すときに必要になります。 パスフレーズは省略もできます。
秘密鍵 ~/.ssh/id_rsa
および 公開鍵 ~/.ssh/id_rsa.pub
が生成される。
どんな方法でもよいので、公開鍵を ssh サーバーに送る。 (公開鍵なので、途中で傍受されてもよい。)
サーバー側
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
うっかりしやすいのが、 authorized_keys
のパーミッションです。
group に write permission がついているとうまくいきません。
$ chmod go-w ~/.ssh/authorized_keys
のようにしておきます。
これ以降、公開鍵暗号方式でssh接続できる。 パスフレーズを省略していると、(セキュリティ的に脆弱だが)パスワードをいちいち入れずに、sshでログインできるようになる。
blog comments powered by Disqus