MacでSSHキー認証を完璧にマスター!パスワード入力から解放される方法

Mac

「毎回パスワード入力するの面倒くさい…」
「セキュリティを強化したいけど、どうすればいい?」
「公開鍵?秘密鍵?なんか難しそう…」

ちょっと待って!実はSSHキー認証って、思っているよりずっと簡単なんです。

しかも、一度設定すれば:

  • パスワード入力が不要になる
  • セキュリティが格段に向上する
  • 自動化やスクリプト実行が可能になる

今から30分後には、あなたもキー認証のプロになれます。一緒に設定していきましょう!


スポンサーリンク
  1. SSHキー認証の仕組み:鍵と錠前で理解する
    1. パスワード認証 vs キー認証
    2. 公開鍵と秘密鍵のペア
  2. 準備:現在の状態を確認しよう
    1. すでに鍵を持っているか確認
    2. どの種類の鍵を選ぶべき?
  3. ステップ1:SSHキーペアを生成する
    1. Ed25519鍵の作成(推奨)
    2. 対話形式での設定
    3. 生成成功!
  4. ステップ2:公開鍵をサーバーに登録する
    1. 方法1:ssh-copy-idを使う(最も簡単)
    2. 方法2:手動でコピー&ペースト
    3. 方法3:一行でやる魔法のコマンド
  5. ステップ3:キー認証で接続テスト
    1. 接続してみよう
    2. もしパスワードを聞かれたら
  6. Mac特有の便利機能:キーチェーンとの連携
    1. パスフレーズをキーチェーンに保存
    2. 自動読み込みの設定
  7. 複数のサーバーを管理する:configファイルの活用
    1. SSH設定ファイルの作成
    2. 接続が超簡単に!
  8. セキュリティを最大限に高める設定
    1. 1. 強力な鍵を使う
    2. 2. パスフレーズを必ず設定
    3. 3. 定期的に鍵を更新
    4. 4. サーバー側の設定強化
  9. トラブルシューティング:よくある問題と解決法
    1. 問題1:Permission denied (publickey)
    2. 問題2:Agent admitted failure to sign
    3. 問題3:Too many authentication failures
    4. 問題4:Host key verification failed
  10. 実践的な活用例:キー認証でできること
    1. 1. 自動バックアップスクリプト
    2. 2. 複数サーバーへの一括コマンド実行
    3. 3. Git/GitHubでの利用
    4. 4. VSCodeでのリモート開発
  11. まとめ:キー認証で変わるあなたのサーバー管理

SSHキー認証の仕組み:鍵と錠前で理解する

パスワード認証 vs キー認証

まず、2つの認証方法の違いを家の鍵に例えて説明します。

パスワード認証:

  • 暗証番号式のドアロック
  • 番号を知っていれば誰でも開けられる
  • 番号を盗み見られるリスクがある

キー認証:

  • 物理的な鍵を使うドアロック
  • 鍵を持っている人だけが開けられる
  • 鍵は複製が難しく、安全性が高い

公開鍵と秘密鍵のペア

SSHキー認証では、2つの鍵を使います:

秘密鍵(Private Key):

  • あなただけが持つ「マスターキー
  • 絶対に他人に渡してはいけない
  • あなたのMacに保存される

公開鍵(Public Key):

  • サーバーに登録する「錠前
  • 他人に見られても問題ない
  • 秘密鍵とセットで初めて機能する

この仕組みの素晴らしいところは、公開鍵からは秘密鍵を作れないこと。だから安全なんです!


準備:現在の状態を確認しよう

すでに鍵を持っているか確認

ターミナルを開いて(Command + スペース → 「terminal」)、次のコマンドを実行:

ls -la ~/.ssh/

もし以下のようなファイルがあれば、すでに鍵を持っています

  • id_rsa / id_rsa.pub(RSA鍵)
  • id_ed25519 / id_ed25519.pub(Ed25519鍵)
  • id_ecdsa / id_ecdsa.pub(ECDSA鍵)

「No such file or directory」と表示されたら、鍵はまだありません。作りましょう!

どの種類の鍵を選ぶべき?

2024年現在のおすすめ順:

  1. Ed25519(最もおすすめ)
  • 最新で最も安全
  • 短くて速い
  • ほとんどのサーバーで使える
  1. RSA(互換性重視)
  • 古いサーバーでも確実に使える
  • 4096ビット以上を推奨
  1. ECDSA(あまり使わない)
  • 中間的な選択肢

特別な理由がなければEd25519を選びましょう


ステップ1:SSHキーペアを生成する

Ed25519鍵の作成(推奨)

ターミナルで以下のコマンドを実行:

ssh-keygen -t ed25519 -C "your_email@example.com"

-C オプション:コメントを追加(メールアドレスを入れると管理しやすい)

対話形式での設定

コマンドを実行すると、いくつか質問されます:

1. 保存場所の指定:

Enter file in which to save the key (/Users/あなた/.ssh/id_ed25519):

そのままEnter(デフォルトでOK)

2. パスフレーズの設定:

Enter passphrase (empty for no passphrase):

→ セキュリティ重視ならパスフレーズを設定
→ 利便性重視ならそのままEnter(パスフレーズなし)

パスフレーズって必要?

  • 設定する場合:より安全(鍵を盗まれても使えない)
  • 設定しない場合:より便利(完全自動化が可能)

3. パスフレーズの確認:

Enter same passphrase again:

→ 同じものを再入力(またはそのままEnter)

生成成功!

こんな表示が出れば成功です:

Your identification has been saved in /Users/あなた/.ssh/id_ed25519
Your public key has been saved in /Users/あなた/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com

そして、アスキーアートが表示されます。これがあなたの鍵の「顔」です!


ステップ2:公開鍵をサーバーに登録する

方法1:ssh-copy-idを使う(最も簡単)

ssh-copy-id ユーザー名@サーバーアドレス

実際の例:

ssh-copy-id admin@192.168.1.100

初回はパスワードを聞かれます。これが最後のパスワード入力になります!

方法2:手動でコピー&ペースト

ssh-copy-idが使えない場合の方法:

1. 公開鍵の内容を表示:

cat ~/.ssh/id_ed25519.pub

2. サーバーにログイン:

ssh ユーザー名@サーバーアドレス

3. authorized_keysファイルに追加:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "公開鍵の内容をここにペースト" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

方法3:一行でやる魔法のコマンド

cat ~/.ssh/id_ed25519.pub | ssh ユーザー名@サーバー "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

長いけど、コピペして実行するだけでOK!


ステップ3:キー認証で接続テスト

接続してみよう

ssh ユーザー名@サーバーアドレス

パスワードを聞かれずにログインできたら大成功

もしパスワードを聞かれたら

以下をチェック:

1. 権限設定を確認:

# ローカル(Mac側)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519

# サーバー側
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

2. 正しい鍵を使っているか確認:

ssh -v ユーザー名@サーバーアドレス

詳細ログで「Offering public key」という行を探します。


Mac特有の便利機能:キーチェーンとの連携

パスフレーズをキーチェーンに保存

パスフレーズを設定した場合、毎回入力するのは面倒。
Macのキーチェーンに保存しましょう:

ssh-add --apple-use-keychain ~/.ssh/id_ed25519

一度パスフレーズを入力すれば、次回から自動で読み込まれます

自動読み込みの設定

~/.ssh/configファイルを作成/編集:

nano ~/.ssh/config

以下を追加:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

これで、Mac起動時に自動的に鍵が読み込まれます


複数のサーバーを管理する:configファイルの活用

SSH設定ファイルの作成

~/.ssh/configに各サーバーの設定を書いておくと便利:

# 本番サーバー
Host production
    HostName 203.0.113.10
    User admin
    Port 22
    IdentityFile ~/.ssh/id_ed25519_prod

# 開発サーバー
Host dev
    HostName 192.168.1.100
    User developer
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_dev

# AWSサーバー
Host aws
    HostName ec2-xx-xxx-xxx-xx.compute.amazonaws.com
    User ec2-user
    IdentityFile ~/.ssh/aws-key.pem

接続が超簡単に!

設定後は、こんなに短いコマンドで接続できます:

ssh production  # 本番サーバーへ
ssh dev        # 開発サーバーへ
ssh aws        # AWSへ

長いコマンドを覚える必要なし


セキュリティを最大限に高める設定

1. 強力な鍵を使う

# RSAを使う場合は4096ビット
ssh-keygen -t rsa -b 4096

# Ed25519なら自動的に強力
ssh-keygen -t ed25519

2. パスフレーズを必ず設定

特に以下の場合は必須

  • 本番サーバーへの接続
  • root権限での接続
  • 機密情報を扱うサーバー

3. 定期的に鍵を更新

3〜6ヶ月ごとに新しい鍵を生成することを推奨:

# 新しい鍵を生成
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_new

# 公開鍵をサーバーに追加
ssh-copy-id -i ~/.ssh/id_ed25519_new.pub ユーザー@サーバー

# 古い鍵を削除(サーバー側で)
ssh ユーザー@サーバー
nano ~/.ssh/authorized_keys  # 古い鍵の行を削除

4. サーバー側の設定強化

サーバー側で/etc/ssh/sshd_configを編集:

# パスワード認証を無効化
PasswordAuthentication no

# rootログインを禁止
PermitRootLogin no

# 空パスワードを禁止
PermitEmptyPasswords no

# キー認証のみ許可
PubkeyAuthentication yes

トラブルシューティング:よくある問題と解決法

問題1:Permission denied (publickey)

原因と解決:

  1. 権限が間違っている
   chmod 700 ~/.ssh
   chmod 600 ~/.ssh/id_*
  1. 公開鍵が登録されていない
   ssh-copy-id ユーザー@サーバー
  1. 間違った鍵を使っている
   ssh -i ~/.ssh/正しい鍵ファイル ユーザー@サーバー

問題2:Agent admitted failure to sign

解決方法:

ssh-add -D  # 全ての鍵を削除
ssh-add ~/.ssh/id_ed25519  # 鍵を追加し直す

問題3:Too many authentication failures

原因: 複数の鍵を試して失敗している

解決方法:

ssh -o IdentitiesOnly=yes -i ~/.ssh/特定の鍵 ユーザー@サーバー

問題4:Host key verification failed

解決方法:

ssh-keygen -R サーバーアドレス  # 古いホスト鍵を削除

実践的な活用例:キー認証でできること

1. 自動バックアップスクリプト

#!/bin/bash
# 毎日実行される自動バックアップ
rsync -avz ~/Documents/ production:~/backup/

パスワード不要なのでcronで自動実行できます!

2. 複数サーバーへの一括コマンド実行

for server in production dev staging; do
    echo "=== $server ==="
    ssh $server "df -h"
done

3. Git/GitHubでの利用

# GitHubに公開鍵を登録後
git clone git@github.com:username/repository.git

パスワード入力なしでpush/pullが可能に!

4. VSCodeでのリモート開発

VSCodeの「Remote – SSH」拡張機能で、キー認証を使った快適な開発環境を構築できます。


まとめ:キー認証で変わるあなたのサーバー管理

今日マスターしたことを振り返りましょう:

SSHキー認証の仕組み(公開鍵と秘密鍵)を理解した
Ed25519鍵の生成方法を学んだ
3つの公開鍵登録方法を習得した
Macのキーチェーン連携で更に便利に
SSH configファイルで接続を簡略化
セキュリティ強化の設定方法を学んだ
トラブル解決のスキルを身につけた

最初は「公開鍵?秘密鍵?」と戸惑うかもしれません。

でも、一度設定してしまえば、もうパスワード入力には戻れません。それくらい快適で安全な方法なんです。

セキュリティと利便性、両方を手に入れたあなたは、もうサーバー管理のプロフェッショナル。

さあ、パスワードレスな新しい世界を楽しんでください!


次のステップにおすすめ:

  • SSH Agentの詳細な使い方
  • 多段SSH(踏み台サーバー経由)の設定
  • YubiKeyなどハードウェアキーでの認証

コメント

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