【SSH】毎回パスワード打ってる?公開鍵認証で快適なサーバ接続環境を作る手順
サーバにSSH接続する際、毎回パスワードを入力するのは手間です。「公開鍵認証」を設定すれば、安全かつパスワードなしでログインできるようになります。
今回は、全てクライアント側(あなたのPC)の操作だけで完結する設定手順と、鍵を作成する際の重要な注意点について解説します。
手順1:SSHキーペアの作成
まずはクライアントPCで「秘密鍵」と「公開鍵」のペアを作成します。現在はセキュリティ強度が高く鍵長も短い ed25519 形式が推奨されています。
ターミナルを開き、以下のコマンドを実行します。
ssh-keygen -t ed25519
⚠️ すでに鍵が存在している場合の注意点
コマンドを実行した際、もし過去に鍵を作成済みであれば、以下のような警告が表示されます。
/Users/username/.ssh/id_ed25519 already exists.
Overwrite (y/n)?
-
y (Yes) を選ぶと: 新しい鍵が上書き作成され、古い鍵は完全に消滅します。もし古い鍵を使って他のサーバやGitHub等に接続していた場合、それらに接続できなくなります。
-
n (No) を選ぶと: 作成を中止します。既存の鍵をそのまま残します。
基本的には n を選択して既存の鍵を温存してください。
コラム:鍵は「使い回す」べきか「分ける」べきか?
「既存の鍵(id_ed25519)がある場合、それを新しいサーバへの接続にも使って良いのか?」という疑問が湧くと思います。
| 運用方法 | メリット | デメリット |
|---|---|---|
| 鍵を使い回す | ・管理が非常に楽 ・どのサーバへも同じ設定で接続可能 |
・万が一秘密鍵が流出した際、登録している全てのサーバがリスクに晒される |
| サーバ毎に分ける | ・セキュリティリスクを分散できる ・特定の鍵だけ無効化しやすい |
・鍵の管理が煩雑になる ・接続先ごとにconfigファイルでの鍵指定(IdentityFile)が必須になる |
結論:個人の開発用途なら「使い回し」でOK
厳密なセキュリティ要件が求められるプロジェクトや、他者と鍵を共有するような特殊な環境を除き、個人のPCから自分の管理下にあるサーバへ接続する場合は、利便性を優先して既存の鍵を使い回す運用が一般的です。
今回は、既存の id_ed25519 を使用する前提で進めます。
手順2:公開鍵をサーバへ転送
作成した(あるいは既存の)「公開鍵」をサーバに登録します。 手動でサーバのファイルを編集する必要はありません。ssh-copy-id コマンドを使えば、安全かつ自動的に転送・設定を行ってくれます。
以下のコマンドの user@hostname 部分を、接続先の情報に書き換えて実行してください。
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@hostname
※実行時に一度だけサーバのログインパスワードが求められます。
Mac等で ssh-copy-id コマンドがない場合
もしコマンドが見つからない場合は、以下のワンライナーで代用可能です。
cat ~/.ssh/id_ed25519.pub | ssh user@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
手順3:接続確認
設定は以上です。以下のコマンドでパスワードを聞かれずにログインできるか確認してください。
ssh user@hostname
パスワード入力なしでプロンプトがログインできたら成功です。
Discussion