公開鍵認証方式を用いたSSH通信の設定方法
December 3, 2021
Updated July 23, 2025
2 min read
SSH(Secure Shell)は、ネットワークを介して安全にリモートサーバーに接続するためのプロトコルです。パスワード認証に比べて、公開鍵認証方式はセキュリティが高く、自動化にも適しています。
1. SSHサーバーの設定変更 [接続先PC] SSHサーバー(sshd)の設定ファイル /etc/ssh/sshd_config を編集し、公開鍵認証を有効化し、パスワード認証を無効化します。
1
sudo nano /etc/ssh/sshd_config
以下の行を探し、設定を変更または追加します。
1
2
3
4
5
6
7
8
9
10
11
# 公開鍵認証を有効化
PubkeyAuthentication yes
# パスワード認証を無効化 (セキュリティ向上のため強く推奨)
PasswordAuthentication no
# rootユーザーでの直接ログインを禁止 (セキュリティ向上のため強く推奨)
PermitRootLogin no
# SSHポートの変更 (オプション、デフォルトは22)
# Port 2222
変更を保存したら、SSHサービスを再起動して設定を適用します。
1
sudo systemctl restart sshd
2. 秘密鍵と公開鍵の作成 [接続元PC] SSH接続を行うクライアントPCで、SSHキーペア(秘密鍵と公開鍵)を生成します。
1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa: RSA方式で鍵を生成します。より新しい ed25519 も推奨されます。-b 4096: RSA鍵のビット長を指定します(より安全)。-C "your_email@example.com": 鍵にコメントを追加します(メールアドレスなど)。コマンドを実行すると、鍵の保存場所とパスフレーズの入力を求められます。
1
2
3
4
5
6
7
8
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): # デフォルトでEnter (通常は変更不要)
Enter passphrase (empty for no passphrase): # パスフレーズを入力 (セキュリティのため推奨)
Enter same passphrase again: # パスフレーズを再入力
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
パスフレーズ : 秘密鍵を保護するためのパスワードです。設定すると、SSH接続時にこのパスフレーズの入力が必要になります。セキュリティのため、設定を強く推奨します。生成されるファイル:
id_rsa: 秘密鍵 。絶対に他人に知られてはいけません。id_rsa.pub: 公開鍵 。サーバーに登録します。3. 公開鍵の登録 [接続先PC] 接続先のサーバーに、生成した公開鍵を登録します。
.ssh ディレクトリの作成と権限設定接続先のユーザーのホームディレクトリに .ssh ディレクトリが存在しない場合は作成し、適切な権限を設定します。
1
2
3
4
5
6
7
8
9
10
11
# ユーザーのホームディレクトリに移動
cd /home/[ ユーザー名]
# .ssh ディレクトリを作成
mkdir .ssh
# .ssh ディレクトリの所有者をユーザー自身に設定
sudo chown [ ユーザー名] :[ ユーザーのグループ名] .ssh
# .ssh ディレクトリのパーミッションを700に設定 (所有者のみ読み書き実行可能)
chmod 700 .ssh
authorized_keys ファイルの作成と公開鍵の登録.ssh ディレクトリ内に authorized_keys ファイルを作成し、その中に公開鍵の内容を貼り付けます。
1
2
3
4
5
6
7
8
9
10
11
# authorized_keys ファイルを作成
touch .ssh/authorized_keys
# authorized_keys ファイルのパーミッションを600に設定 (所有者のみ読み書き可能)
chmod 600 .ssh/authorized_keys
# 公開鍵の内容を authorized_keys に追加
# 接続元PCからscpなどで公開鍵を転送するか、手動でコピー&ペースト
# 例: scp ~/.ssh/id_rsa.pub user@remote_host:~/.ssh/id_rsa.pub
# その後、リモートホストで
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
注意 : authorized_keys ファイルには、1行に1つの公開鍵を記述します。
4. SSH接続 [接続元PC] これで、公開鍵認証方式でSSH接続ができるようになります。
1
ssh [ ユーザー名] @[ IPアドレスまたはホスト名]
パスフレーズを設定している場合は、ここでパスフレーズの入力を求められます。
1
Enter passphrase for key '/Users/[ユーザー名]/.ssh/id_rsa': # パスフレーズを入力
正しく設定されていれば、パスワードなしでリモートサーバーにログインできます。