問題の発生リモートサーバーにログインしようとした際、パスワード入力プロンプトの代わりに大量の警告テキストが表示されることがあります。これは、秘密鍵が「公開されすぎている(権限が緩すぎる)」ために SSH が接続を拒否している状態です。資格情報を保護するため、OpenSSH クライアントは該当の鍵を無視し、接続をブロックします。
Permissions 0644 for '/home/user/.ssh/id_rsa' are too open.
原因SSH はセキュリティに対して非常に厳格です。秘密鍵は、自宅の物理的なマスターキーのようなものです。ローカルマシンの他のユーザーがそのファイルを読み取れる設定になっている場合、SSH はその鍵が侵害された(安全ではない)とみなします。
上記のエラーでは、パーミッションが 0644 に設定されています。これらの数字の意味は以下の通りです:
- 6 (所有者): ファイルの読み取りと書き込みが可能。- 4 (グループ): 同じグループ内の他のユーザーが読み取り可能。- 4 (その他): システム上の他の誰でも読み取り可能。AWS から
.pemファイルをダウンロードしたり、Windows のパーティションから Linux に鍵を移動したりすると、システムはデフォルトでこのような広範なパーミッションを設定することがよくあります。SSH は、あなただけがアクセス権を持っていることを要求します。
解決策### 1. 現在のパーミッションを確認するまず、鍵の現在の状態を確認します。ターミナルで以下のコマンドを実行してください:
ls -l ~/.ssh/id_rsa
もし -rw-r--r-- と表示された場合、それは誰でも読み取り可能であることを意味します。権限を制限する必要があります。
2. 鍵ファイルの権限を制限する秘密鍵の標準的なパーミッションは 600 です。これにより、あなたにはフルアクセス権が与えられ、他の全員はアクセスできなくなります。以下のコマンドを実行してください:
chmod 600 ~/.ssh/id_rsa
鍵の名前が deploy-key.pem など異なる場合は、そのファイル名を使用してください。設定後、ls -l を実行すると -rw------- と表示されるはずです。
3. .ssh ディレクトリを保護するファイル自体に問題がなくても、それを含むフォルダの権限が緩すぎる場合があります。~/.ssh ディレクトリは 700(所有者のみ読み取り/書き込み/実行可能)に設定されている必要があります。以下のコマンドで修正します:
chmod 700 ~/.ssh
4. 接続をテストする再度接続を試みます:
ssh -i ~/.ssh/id_rsa user@192.168.1.100
警告が表示されなくなり、パスフレーズの入力が求められるか、すぐにログインできるようになります。
特殊なケース:Windows Subsystem for Linux (WSL)WSL を使用していますか?鍵が Windows のドライブ(/mnt/c/ など)に保存されている場合、chmod コマンドがエラーを出さずに失敗することがあります。これは、Windows のドライブが Linux のパーミッションと完全に対応していないファイルシステム (NTFS) を使用しているためです。
最も簡単な解決策は、鍵を Linux 側のホームディレクトリにコピーすることです:
cp /mnt/c/Users/YourName/.ssh/id_rsa ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

