クライアント側
鍵を作成する。
ssh-keygen -t rsa
鍵名を入力する。(カレントディレクトリにファイルが作成される。)
空エンターの場合はユーザディレクトリ配下の.sshフォルダにid_rsaとid_rsa.pubが作成される。
Enter file in which to save the key (/home/<user>/.ssh/id_rsa):
パスフレーズの入力をする。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
以下のファイルが作成されます。
<ファイル名>(秘密鍵)
<ファイル名>.pub(公開鍵)
鍵名の入力で空エンターをしなかった場合は自分で.sshフォルダを作成して作成した秘密鍵を移動します。
mkdir .ssh
mv (秘密鍵) .ssh
作成した公開鍵をサーバーへ転送します。
クライアント側の公開鍵は転送後は削除しても大丈夫です。
scp .ssh/id_rsa.pub <user>@<server>:<path>
鍵のパーミッションを変更する。
chmod 600 .ssh/id_rsa
サーバ側
.sshフォルダを作成する。(既にあれば必要ない)
mkdir .ssh
.sshフォルダのパーミッションを変更する。
(パーミッションが775などだと疎通確認時に公開鍵認証がうまくできなかった。)
chmod 700 .ssh
クライアントから転送した公開鍵を.sshフォルダに移動しauthorized_keysに追加する。
mv id_rsa.pub authorized_keys <- authorized_keysがない場合
cat id_rsa.pub >> authorized_keys <- authorized_keysが有る場合
鍵のパーミッションを変更する。
chmod 600 authorized_keys
疎通確認
クライアントから以下のコマンドを実行します。
ssh -l <user> -i <秘密鍵のパス> <server>
パスフレーズを聞かれるので鍵作成時のパスフレーズを入力します。
Enter passphrase for key '.ssh/id_rsa':
ログイン出来れば問題ありません。
パスワードログイン禁止
公開鍵でログインできるようになったら、サーバーにパスワードでログインできないように設定を変更します。
sudo vi /etc/ssh/sshd_config
PasswordAuthenticationをnoに変更します。
PasswordAuthentication no
sshdを再起動します。
sudo systemctl restart sshd
パスワードでログインできなければ設定完了です。