SSHの鍵認証についてやり方自体は流れ作業でできていましたが、根本的なところが理解していないので復習。
まずは通常の流れを。
1 クライアント(自分のPC)で公開鍵・秘密鍵を作成。
ssh-keygen コマンドを使います。
ssh-keygen
コマンドを叩くと
~/.ssh ディレクトリが作成され、このなかに公開鍵(id_rsa.pub)と秘密鍵(id_rsa)が作られます。
2 サーバー側に公開鍵(id_rsa.pub)を配置します。配置といってもメールなどで送るのではなく、scpコマンドで送るのが正しい方法のようです。ちなみに外部のサービス(たとえばGitbuketやGitHub)などだとサーバーに送ることができないため、id_rsa.pubの内容(ただのテキスト)を登録します。
ちなみにGitHubには https://github.com/${USERNAME}.keys でアクセスすると鍵の情報を見ることができます。
3 サーバー側で鍵の登録をauthorized_keysに登録します。
具体的には
1 |
cat .ssh/id_rsa.pub >> .ssh/authorized_keys |
というコマンドを使い登録します。
4 これでクライアントとサーバーが通信することができます。
もちろん公開鍵と秘密鍵両方ないとダメです。原理はリンク参照。
追記
ppkという秘密鍵はputtey形式のものになり、Linuxサーバーだけでやりとりするケースでは使われません。WinSCPなどを使うときには必要になります。いつもWinSCP使ってるんで作ってましたが・・・
参考リンク
いつも↑のようにやることが多かったですが、どっちを接続される側におくか(ホスト側)、接続をお願いする側(一般的にはクライアント側)によって変わってきますね。
正しくは今回の記事のように
自分のPC(クライアント) 秘密鍵
サーバー(リモートホスト側) 公開鍵
なのですが、サーバー側で鍵を作って秘密鍵を各人に配布するケースもあります。
よくあるパターンとしては多人数が接続するパターンで各人から公開鍵を回収するのが大変なケースですね。
秘密鍵と公開鍵は、サーバー側(ssh接続される側)で作ろうがクライアント側(sshコマンドを打って接続しに行く側)で作ろうが、どっちでもいいそうな。