🔑

【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