【Terminal/Linuxコマンド】公開鍵認証で(パスワード無しで)SSH接続をするための設定方法

パスワードを使う代わりに公開鍵認証でサーバーにssh接続する方法です。

公開鍵認証(ssh)の仕組み

sshを使ってサーバーにアクセスできるようにするためには、まずサーバーに接続を許可するクライアントの公開鍵を設置します。

その後クライアントがサーバーにssh接続を試みた場合、サーバーはクライアントに公開鍵により暗号化したメッセージを送ります。

クライアントがその暗号を解読できた場合、接続を許可した公開鍵に対応する秘密鍵を所有している(許可したクライアントである)事が証明されます。

接続の手順

1.クライアントサーバーで公開鍵と秘密鍵を作成

ssh-keygen

パスワード等聞かれますが、空白のまま「enter」を入力でよいです。

2.公開鍵を接続先のサーバーにコピー

scp ~/.ssh/id_rsa.pub user@remotehost:~/

サーバーのパスワードを求められるので入力。

3.接続先のサーバーに移動

ssh user@remotehost

ここでもサーバーのパスワードを求められるので入力。

4.公開鍵を接続許可リストに追加

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

必要に応じてサーバーに置いてある公開鍵は消してしまいましょう。

補足

サーバーではssh接続を扱うsshdというデーモンが動いています。

/etc/sshd_configにsshdの設定が記述してあり、authorized_keysファイルの置き場が記述されています。
デフォルトでは~/.ssh/authorized_keys authorized_keys2に許可するクライアントの公開鍵を設置する設定となっています。一度は設定ファイルをちらっと見てましょう。