「毎回パスワードを入力するのが面倒…」 「もっと安全にサーバーにアクセスしたい」 「GitHubにプッシュする時にパスワードを求められて困る」
こんな悩みを抱えていませんか?
SSH公開鍵認証を使えば、これらの問題をすべて解決できます。パスワードよりも格段に安全で、しかも一度設定すれば毎回の入力が不要になる便利な仕組みです。
この記事では、SSH公開鍵の基本から実際の使い方まで、初心者でも迷わずに設定できるよう丁寧に解説していきます。
🔑 SSH公開鍵とは?鍵のペアで実現する安全な認証

そもそもSSHって何?
SSH(Secure Shell)は、ネットワーク経由で別のコンピュータに安全に接続するための仕組みです。
簡単に言うと、「離れた場所にあるコンピュータを、まるで目の前にあるかのように操作できる技術」のことですね。
公開鍵認証の仕組みを理解しよう
SSH公開鍵認証は、2つの鍵のペアを使います:
🔐 秘密鍵(Private Key)
- あなただけが持つ「合鍵の原本」
- 絶対に他人に渡してはいけない
- パソコンの中に大切に保管する
🔓 公開鍵(Public Key)
- サーバーに渡す「錠前」
- 他人に見られても問題ない
- 接続したいサーバーに登録する
なぜパスワードよりも安全なの?
パスワード認証と公開鍵認証の違いを比較してみましょう:
パスワード認証の問題点:
- 簡単なパスワードは推測されやすい
- 複雑なパスワードは覚えにくい
- ネットワーク経由で送信する際のリスクがある
- 総当たり攻撃(ブルートフォース)を受けやすい
公開鍵認証のメリット:
- 暗号化された鍵は推測がほぼ不可能
- パスワードを覚える必要がない
- 秘密鍵がなければ絶対にログインできない
- 自動化やスクリプト実行が安全にできる
🛠️ SSH鍵ペアの作成方法
ステップ1:ターミナルを開く
Windows の場合:
- PowerShell または コマンドプロンプトを起動
- Git Bash を使うのもおすすめです
Mac/Linux の場合:
- ターミナルアプリケーションを起動
ステップ2:鍵ペアを生成する
以下のコマンドを実行します:
ssh-keygen -t ed25519 -C "your_email@example.com"
コマンドの意味:
ssh-keygen
:SSH鍵を生成するコマンド-t ed25519
:暗号化の種類(Ed25519は最新で安全)-C "メールアドレス"
:鍵の識別用コメント
ステップ3:保存場所とパスフレーズを設定
コマンドを実行すると、以下の質問が表示されます:
Enter file in which to save the key (/home/username/.ssh/id_ed25519):
そのままEnterキーを押せば、標準の場所に保存されます。
次に、パスフレーズ(鍵を保護するパスワード)を聞かれます:
Enter passphrase (empty for no passphrase):
パスフレーズの設定について:
- 設定する場合:より安全だが、使用時に毎回入力が必要
- 設定しない場合:便利だが、秘密鍵ファイルが盗まれたら危険
- 初心者は最初は空欄でもOK(後から追加可能)
ステップ4:生成された鍵を確認
以下のコマンドで、作成された鍵ファイルを確認できます:
ls -la ~/.ssh/
作成されるファイル:
id_ed25519
:秘密鍵(絶対に公開しない)id_ed25519.pub
:公開鍵(サーバーに登録する)
📤 公開鍵をサーバーに登録する方法

方法1:ssh-copy-id を使う(最も簡単)
ssh-copy-id ユーザー名@サーバーのIPアドレス
実例:
ssh-copy-id john@192.168.1.100
このコマンドを実行すると、自動的に公開鍵がサーバーに登録されます。
方法2:手動でコピーする
まず、公開鍵の内容を表示します:
cat ~/.ssh/id_ed25519.pub
表示された内容(ssh-ed25519 で始まる長い文字列)をコピーして、サーバー側の ~/.ssh/authorized_keys
ファイルに追加します。
サーバー側での作業:
# .sshディレクトリがない場合は作成
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 公開鍵を追加
echo "コピーした公開鍵の内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
🌐 GitHubやGitLabでの使い方
GitHubに公開鍵を登録する手順
- 公開鍵をコピー
cat ~/.ssh/id_ed25519.pub
- GitHubの設定ページを開く
- GitHubにログイン
- 右上のプロフィールアイコン → Settings
- 左メニューの「SSH and GPG keys」
- 新しいSSH鍵を追加
- 「New SSH key」ボタンをクリック
- Title:わかりやすい名前(例:My Laptop)
- Key:コピーした公開鍵を貼り付け
- 「Add SSH key」をクリック
接続テスト
ssh -T git@github.com
成功すると以下のようなメッセージが表示されます:
Hi username! You've successfully authenticated...
🔧 よくあるトラブルと解決方法
問題1:Permission denied エラー
原因と対策:
- 権限設定が間違っている
chmod 700 ~/.sshchmod 600 ~/.ssh/id_ed25519chmod 644 ~/.ssh/id_ed25519.pub
問題2:Could not open a connection to your authentication agent
解決方法:
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_ed25519
問題3:Host key verification failed
初回接続時の確認:
- 初めて接続するサーバーの場合は正常な動作
- 「yes」と入力して続行
問題4:複数の鍵を使い分けたい
~/.ssh/config ファイルを作成:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
Host myserver
HostName 192.168.1.100
User john
IdentityFile ~/.ssh/id_ed25519_server
🛡️ セキュリティのベストプラクティス

秘密鍵を守るための5つのルール
- 秘密鍵は絶対に共有しない
- メールで送らない
- クラウドストレージに置かない
- GitHubにアップロードしない
- 定期的に鍵を更新する
- 年に1回は新しい鍵ペアを生成
- 古い公開鍵は削除する
- 強力なパスフレーズを使用
- 重要なサーバーには必須
- パスワードマネージャーで管理
- バックアップは暗号化する
- USBメモリに保存する場合は暗号化
- 紙に印刷する場合は金庫に保管
- 不要な鍵は削除する
- 使わなくなったサーバーの鍵は削除
- authorized_keysも定期的に整理
💡 便利な活用テクニック
SSHエージェント転送
複数のサーバーを経由する場合に便利:
ssh -A ユーザー名@踏み台サーバー
ポート転送(トンネリング)
ローカルポートをリモートに転送:
ssh -L 8080:localhost:80 ユーザー名@サーバー
複数の鍵を自動選択
configファイルで設定しておけば、自動的に適切な鍵が選ばれます。
📚 まとめ:SSH公開鍵認証で快適なサーバー管理を
SSH公開鍵認証を使えば、以下のメリットが得られます:
✅ パスワード不要で素早くログイン ✅ セキュリティが大幅に向上 ✅ 自動化やスクリプト実行が安全に ✅ GitHub/GitLabとの連携がスムーズに
最初の設定は少し手間かもしれませんが、一度設定してしまえば、その便利さと安全性を実感できるはずです。
次のステップとして:
- まずは自分のパソコンで鍵ペアを作成してみる
- テスト用のサーバーやGitHubで試してみる
- 慣れたら本番環境にも適用する
- configファイルで複数の接続先を管理する
セキュアで効率的なサーバー管理を始めましょう!
この記事が役に立ったら、ぜひ同じ悩みを持つ仲間にもシェアしてください。安全で便利なSSH公開鍵認証を、もっと多くの人に知ってもらいましょう。
コメント