SSH公開鍵認証方式について
引用元:http://dl.off-soft.net/images/sakura/ssl/public_key.png
いや、知ってましたよ。なんとなくは。
ただ、以下のパターンの場合がごっちゃ混ぜになってました。
ごちゃまぜになってた話
- ホストA
- ホストB
「Aで鍵作った場合、Bで鍵作った場合」で頭がごちゃごちゃになってました。
ケース1 Aで鍵作成
Aでssh-keygenをした場合、公開鍵Aと秘密鍵Aができます。
B→Aの通信をしたい場合は、
・Bへ秘密鍵Aを送る
・Aのauthorized_keysに公開鍵Aを追加する
ケース2 Bで鍵作成
Bでssh-keygenをした場合、公開鍵Bと秘密鍵Bができる
B→Aの通信をしたい場合は、
・Aのauthorized_keysに公開鍵Bを追加する
まとめ
ケース1が良い場合(ホストAで鍵生成)
特定のユーザだけに公開鍵認証でホストAを公開したい場合
(管理者側で鍵の生成を行う)
ケース2が良い場合(ホストBで鍵生成)
ホストBから大量のクライアントに対してSSHを実行する場合(Ansibleやserverspecなど)
付録(sshの公開鍵認証がうまくいかない場合のTips)
以下の点に注意すると大体解決します。
- id_rsaのパーミッションと権限の問題
- ~/.ssh ディレクトリのパーミッションと権限の問題
- SELinuxが有効な場合の問題(こちら)
- /etc/ssh/sshd_configの設定の問題
- ファイル名、格納先の誤り(authorized_keysなど)
sshを実行するときに-vvvv
オプションを使用することで詳細なログが見れますのでトラブルシュートに使って下さい。