SSHの公開鍵認証の手順について、結構複雑なので整理も込めて以下に手順を記述。
いまいち理解できていない部分もあるので自分の妄想も入ってます。
公開鍵認証の流れ
①クライアント側で公開鍵と秘密鍵のペアを作成する
②作成した公開鍵をサーバに登録する
③ユーザの公開鍵が使用できているか確認する
④クライアント側でユーザの秘密鍵を利用してデータを作成し署名を入れる
➄署名入りのデータをサーバへ送る
⑥サーバ側でユーザの公開鍵を利用して署名を検証する
⑦OKならログインを許可する
※間違っていたら訂正をお願いします。
①クライアント側で公開鍵と秘密鍵のペアを作成する
ssh-keygen
オプション
-t (タイプ) 暗号化タイプを指定する。
rsa1 :RSA(SSH1)
rsa :RSA(SSH1)
dsa :DSA(SSH2)
-p パスフレーズを変更する
-f (ファイル名) 鍵ファイルを指定する
-R (ホスト名) 指定されたホストの鍵をknown_hostsファイルから削除する
公開鍵と秘密鍵のファイル名
バージョン1 identity identity.pub
バージョン2(RSA) id_rsa id_rsa.pub
バージョン2 (DSA) id_dsa id_dsa.pub
②作成した公開鍵をサーバへ送る
送る方法はSCP。
scp ~/.ssh/id_dsa.pub hogehogeserver.jp:publickey
③公開鍵を送ったサーバにログインする。まだパスワード認証しかできないのでパスワード認証でログインする
ssh hogehoge@hogehogeserver.jp
④ログインできたら先ほど送った公開鍵を~/.ssh/authorized_keysに移動する
cat publickey >> ~/.ssh/authorized_keys
➄authorized_keysファイルは所有者のみが読み書きできるようにしておく。
chmod 600 ~/.ssh/authorized_keys
これで完成みたいです。次回のSSHログイン時から公開鍵認証が利用できるようになり、接続すると、パスフレーズを尋ねられるようになるようです。