ssh で公開鍵認証でパスワードなしで接続する

ssh で公開鍵認証でパスワードなしで接続する

ssh で公開鍵認証を利用することにより、パスワード入力なしで接続する設定です。

Advertisement

ssh-keygen による公開鍵と秘密鍵の作成

ssh-keygen コマンドにより、公開鍵と秘密鍵を作成します。linux でも MacOS でも同様に作成可能です。

暗号化方式は、rsa を使うのは古いので、より今時の ed25519 を使うようにしましょう

MacOS の場合、以下のようにします。

$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/user/.ssh/id_ed25519):

そのまま return キーを入力すると、デフォルトでホームディレクトリの .ssh ディレクトリ内に、id_ed25519 と id_ed25519.pub の2つのファイルが作成されます。

id_ed25519 が秘密鍵で、id_ed25519.pub が公開鍵となります。

次にパスフレーズを聞かれますので、任意のパスフレーズを入力します。
(パスフレーズなしの場合はそのまま return を入力します。)

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

公開鍵の id_ed25519.pub の内容を ssh 接続したいサーバーの方に登録することになります。

公開鍵をサーバーに登録する

公開鍵を接続先のサーバーの ~/.ssh/authorized_keys に登録します。

ホームディレクトリ内に、.ssh ディレクトリや authorized_keys ファイルがない場合は、あらかじめ作成しておきます。

以下のコマンドで、authorized_keys ファイルに公開鍵を追加します。

$ cat ~/.ssh/id_ed25519.pub | ssh [ユーザ名]@[サーバ名] 'cat >> .ssh/authorized_keys'

サーバー側 sshd_config の設定

パスワード認証なしで公開鍵認証のみで接続できるようにサーバー側の sshd_config の設定を変更します。

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes

PAM (Pluggable Authentication Modules) 認証が有効な状態で、ChallengeResponseAuthentication が有効になっていると、PasswordAuthentication を無効にしても PAM のパスワード認証が利用されるため、PAM を有効にして公開鍵認証のみ利用したい場合は、ChallengeResponseAuthentication を無効にする必要があります。

sshd_config を修正したら、sshd を再起動します。

公開鍵のパスフレーズを変更する

一度設定した公開鍵のパスフレーズを変更することもできます。

$ ssh-keygen -p -f ~/.ssh/id_ed25519