SSH公開鍵の完全ガイド:パスワードなしで安全にサーバーへ接続する方法

Web

「毎回パスワードを入力するのが面倒…」 「もっと安全にサーバーにアクセスしたい」 「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に公開鍵を登録する手順

  1. 公開鍵をコピー cat ~/.ssh/id_ed25519.pub
  2. GitHubの設定ページを開く
    • GitHubにログイン
    • 右上のプロフィールアイコン → Settings
    • 左メニューの「SSH and GPG keys」
  3. 新しい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つのルール

  1. 秘密鍵は絶対に共有しない
    • メールで送らない
    • クラウドストレージに置かない
    • GitHubにアップロードしない
  2. 定期的に鍵を更新する
    • 年に1回は新しい鍵ペアを生成
    • 古い公開鍵は削除する
  3. 強力なパスフレーズを使用
    • 重要なサーバーには必須
    • パスワードマネージャーで管理
  4. バックアップは暗号化する
    • USBメモリに保存する場合は暗号化
    • 紙に印刷する場合は金庫に保管
  5. 不要な鍵は削除する
    • 使わなくなったサーバーの鍵は削除
    • authorized_keysも定期的に整理

💡 便利な活用テクニック

SSHエージェント転送

複数のサーバーを経由する場合に便利:

ssh -A ユーザー名@踏み台サーバー

ポート転送(トンネリング)

ローカルポートをリモートに転送:

ssh -L 8080:localhost:80 ユーザー名@サーバー

複数の鍵を自動選択

configファイルで設定しておけば、自動的に適切な鍵が選ばれます。


📚 まとめ:SSH公開鍵認証で快適なサーバー管理を

SSH公開鍵認証を使えば、以下のメリットが得られます:

パスワード不要で素早くログイン ✅ セキュリティが大幅に向上自動化やスクリプト実行が安全に ✅ GitHub/GitLabとの連携がスムーズに

最初の設定は少し手間かもしれませんが、一度設定してしまえば、その便利さと安全性を実感できるはずです。

次のステップとして:

  1. まずは自分のパソコンで鍵ペアを作成してみる
  2. テスト用のサーバーやGitHubで試してみる
  3. 慣れたら本番環境にも適用する
  4. configファイルで複数の接続先を管理する

セキュアで効率的なサーバー管理を始めましょう!


この記事が役に立ったら、ぜひ同じ悩みを持つ仲間にもシェアしてください。安全で便利なSSH公開鍵認証を、もっと多くの人に知ってもらいましょう。

コメント

タイトルとURLをコピーしました