以下のような状況では、秘密鍵が機能しない原因は多岐にわたります。接続元がWindowsで、鍵をTera Termで作成し、接続先がUbuntuの場合を想定し、考えられる原因を列挙します。
1. 秘密鍵の形式がサーバーと互換性がない
• 原因: Tera Termで作成した鍵の形式が、サーバー側でサポートされていない形式(例: OpenSSH形式でないなど)。
• 対策: 鍵を作成する際に、OpenSSH形式で生成されていることを確認する。ssh-keygenコマンドで鍵を再変換して確認。
ssh-keygen -i -f id_rsa.ppk > id_rsa
(id_rsa.ppkがTera Termで作成した鍵)
2. 秘密鍵のパーミッションが適切でない
• 原因: Windowsからサーバーに秘密鍵を転送した際に、鍵ファイルのパーミッションが緩すぎる(例: chmod 600が適用されていない)。
• 対策: サーバー上で秘密鍵のパーミッションを修正。
chmod 600 ~/.ssh/id_rsa
3. 公開鍵がサーバーに正しく配置されていない
• 原因: ~/.ssh/authorized_keysに公開鍵が正しく追加されていない、または改行や空白が含まれている。
• 対策: サーバーの~/.ssh/authorized_keysファイルに公開鍵を正しく追加し、1行に収めることを確認。
echo "公開鍵の内容" >> ~/.ssh/authorized_keys
4. 公開鍵と秘密鍵が一致していない
• 原因: 作成した公開鍵と秘密鍵のペアが一致していない(別のペアを使用している)。
• 対策: 公開鍵を再度生成し、ssh-keygen -yで秘密鍵から公開鍵を出力して確認。
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
5. Windows上での改行コードの違い