Secure Shell (SSH) は、リモート・システムを安全に管理しアクセスするための、最も広く使われているツールの1つである。安全性が低く、ブルートフォース攻撃を受けやすい従来のパスワード・ベースの認証に頼る代わりに、システム管理者は、より優れたセキュリティ、スケーラビリティ、および自動化のために、SSHキー・ベースの認証を構成することが多い。
このガイドでは、ssh-keygen を使用して SSH 鍵を生成する方法、ssh-copy-id を使用して鍵をリモート・サーバに安全にコピーする方法、構成を検証する方法、およびセキュリティのベスト・プラクティスに従う方法について説明します。
SSH鍵では、公開鍵と秘密鍵のペアを使った認証が行われます:
この方法は、特に開発者、システム管理者、自動デプロイメントにとって、より安全 でより便利です。
以下のコマンドを実行して、新しいSSH鍵ペアを生成します:
キーを保存するファイル→Enterを押してデフォルトを受け入れる:~/.ssh/id_rsa
パスフレーズ(オプションだが推奨)→セキュリティのレイヤーを追加する。
設定した場合、秘密鍵を使用する際に入力する必要があります。
鍵が生成されたら、ssh-copy-id を使用して公開鍵をリモートサーバに転送します:
このコマンドは
あなたの公開鍵(id_rsa.pub)をサーバーのものに追加します:
.ssh ディレクトリと鍵ファイルの正しいパーミッションを自動的に設定します。
ssh-copy-idが利用できない場合は、手動で鍵をコピーすることができます:
このコマンドは
すべての動作を確認する
正しく設定されていれば、パスワードを入力しなくてもログインできるはずです。
パスフレーズが設定されている場合は、代わりにその入力を求められます。
RSA 4096またはEd25519 を使用してください:
Ed25519 鍵の方が小さく、高速で、安全です。
パーミッションが開きすぎていると、SSHは鍵の使用を拒否します。
リモートサーバで
設定します:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
それからSSHを再起動します:
パスフレーズを毎回入力する代わりに、ssh-agentを使います:
これでセッション用の鍵がキャッシュされます。
問題点 | 考えられる原因 | 解決方法 |
---|---|---|
パスワードを要求される | パーミッションが間違っているか、キーがない | ~/.sshのpermsとauthorized_keysを確認してください。 |
“Permission denied” エラー | ユーザー名またはIPが間違っている | 正しいログイン認証情報を確認する |
ssh-copy-idが見つからない | ユーティリティが見つからない | sudo apt install openssh-client でインストールしてください。 |
キーが無視された | ファイルのパーミッションが許可されすぎている | chmod 600 ~/.ssh/id_rsa を実行してください。 |
ssh-keygen および ssh-copy-id を使用することで、リモートサーバを管理する際の セキュリティと利便性が向上します。SSH 鍵認証を設定することで、管理者はパスワードベースのログインに関連するリスクを排除し、安全なアクセスを効率化することができます。