なぜ SSH がまだパスワードを求めるのか
鍵を設定したのに SSH がパスワードを求め続ける ── これはサーバーがあなたの鍵を受け入れず、パスワード認証にフォールバックしていることを意味します。原因はほぼ常に 6 つのうちのどれかです:公開鍵が authorized_keys にない、ファイルまたはディレクトリのパーミッションが緩すぎる、間違ったユーザーでログインしている、クライアントが鍵を提示していない、sshd で鍵認証が無効になっている、または SELinux がファイルに誤ったラベルを付けている。どれなのかを、速いものから順に見つける方法を紹介します。
6 つの原因
| # | 原因 | チェック |
|---|---|---|
| 1 | 鍵が authorized_keys にない | 本当にこのユーザーにコピーしましたか? |
| 2 | パーミッションが緩すぎる(最も多い) | ~/.ssh は 700、authorized_keys は 600、ホームはグループ書き込み不可 |
| 3 | ユーザー名が違う | 鍵はユーザーごと ── ログインするユーザーにインストールしましたか? |
| 4 | クライアントが鍵を提示していない | ssh -v に "Offering public key…" が表示される? |
| 5 | sshd が鍵認証を許可していない | sshd_config に PubkeyAuthentication yes がある? |
| 6 | SELinux のコンテキストが違う | RHEL/Fedora:restorecon -R ~/.ssh |
サーバーに教えてもらう
最速の診断は、接続中にサーバーの認証ログを見ることです。動作するセッション(またはコンソール)から:
sudo tail -f /var/log/auth.log # Debian/Ubuntu
sudo journalctl -u ssh -f # systemd 理由がそのまま書かれます ── Authentication refused: bad ownership or modes for file …(これが原因 #2)、または user not allowed など。クライアント側では、ssh -v user@host であなたの鍵がそもそも提示されているか(原因 #4)が分かります。
第 1 の修正:パーミッション
authorized_keys が読み取り可能すぎると、OpenSSH は黙って無視します。サーバー上で、ログインユーザーに対して:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R $USER:$USER ~/.ssh あなたのホームディレクトリがグループまたは全員書き込み可能でないことも確認してください(chmod g-w,o-w ~)。「鍵をインストールしたのにまだパスワードを求められる」ケースのほとんどはこの原因です。クライアント側の鏡像となる問題 ── あなたの秘密鍵が緩すぎる ── は UNPROTECTED PRIVATE KEY FILE です。
その他の修正
- 鍵が未インストール / ユーザーが違う ── ssh-copy-id で正しいアカウントに再コピーします。
rootにインストールしてもubuntuでのログインには役立ちません。 - クライアントが提示していない ── 正しい鍵を指定します:
ssh -i ~/.ssh/mykey user@host、または 特定の鍵を使うを参照。 - sshd が無効にしている ──
/etc/ssh/sshd_configにPubkeyAuthentication yesを設定し、sudo systemctl restart sshを実行します。
スマホでは
モバイルでこれがつらいのは、冗長なログを読み、それを原因に対応づけることです。そのマシンへの動作するセッションがあれば、auth.log の行を選択してアシスタントに尋ねるだけ ── TermAI の AI がそれを読み、パーミッションの問題なのか、鍵が無いのか、設定の問題なのかを、正確なコマンドとともに教えてくれます。そして TermAI は鍵を端末の Keychain に保存してあなたの代わりにデプロイするため、クライアント側の原因(間違った鍵の提示、秘密鍵のパーミッション不備)はそもそも起こりません。
FAQ
鍵を追加したのに SSH がまだパスワードを求めるのはなぜ?
サーバーが鍵を受け入れていないため、パスワードにフォールバックしています。多くの場合、~/.ssh(700)または authorized_keys(600)のパーミッションが緩すぎる、鍵が間違ったユーザーの下にある、または一度も追加されていません。/var/log/auth.log を確認してください。
鍵が提示されているか確認するには?ssh -v user@host を実行し、"Offering public key" を探します。無ければ -i でクライアントに鍵を指定してください。
"bad ownership or modes" と出ます ── どうすれば?
これはパーミッションの原因です:chmod 700 ~/.ssh、chmod 600 ~/.ssh/authorized_keys、そしてホームディレクトリがグループ書き込み可能でないことを確認してください。
サーバーが鍵認証を無効にしている可能性は?
あります ── /etc/ssh/sshd_config の PubkeyAuthentication yes を確認し、sshd を再起動してください。
クイックファクト
- 意味:サーバーがあなたの鍵を拒否し、パスワードにフォールバックした
- 第 1 の原因:パーミッション ──
~/.ssh700、authorized_keys600、ホームはグループ書き込み不可 - 診断:サーバー側は
/var/log/auth.log、クライアント側はssh -v - その他:ユーザー違い、鍵が未提示、
PubkeyAuthentication no、SELinux コンテキスト
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.