解決策 1:
この状況で最初に行うことは、 -v
を使用することです ssh
へのオプション 、試行された認証の種類とその結果を確認できます。それは状況を理解するのに役立ちますか?
質問の更新で、「別のローカルUbuntuで」と述べています。 ssh 秘密鍵を他のマシンにコピーしましたか?
解決策 2:
明示的に言及されていないため、sshd はデフォルトで authorized_keys
のアクセス許可に対して非常に厳密です。 ファイル。したがって、authorized_keys
の場合 書き込み可能です ユーザー以外の誰に対しても、書き込み可能にすることもできます ユーザー以外の誰かによって、認証を拒否します (sshd が StrictModes no
で構成されていない限り) )
「書き込み可能にすることができる」とは、親ディレクトリのいずれかがユーザー以外のユーザーに書き込み可能である場合、それらのディレクトリの変更を許可されているユーザーは、authorized_keys を変更/置換できるような方法でアクセス許可の変更を開始できるということです。 /P>
さらに、 /home/username/.ssh
の場合 ディレクトリはユーザーによって所有されていないため、ユーザーはキーを読み取る権限を持っていないため、問題が発生する可能性があります:
drwxr-xr-x 7 jane jane 4096 Jan 22 02:10 /home/jane
drwx------ 2 root root 4096 Jan 22 03:28 /home/jane/.ssh
jane は .ssh
を所有していないことに注意してください ファイル。
chown -R jane:jane /home/jane/.ssh
この種のファイルシステムのパーミッションの問題は ssh -v
では表示されません 、ログ レベルを DEBUG に設定するまで、sshd ログ (!) にも表示されません。
/etc/ssh/sshd_config
を編集 .LogLevel DEBUG
という行が必要です そこのどこかに。ディストリビューションが提供するメカニズムを使用して、SSH サーバーをリロードします。 (service sshd reload
RHEL/CentOS/Scientific で。) グレースフル リロードでは、既存のセッションがドロップされません。- もう一度認証してみてください。
- 認証機能のログがどこにあるのかを調べて、それらを読み取ります。 (IIRC、
/var/log/auth.log
Debian ベースのディストリビューション。/var/log/secure
RHEL/CentOS/Scientific の場合)
ファイルシステムのアクセス許可エラーを含むデバッグ出力で、何が問題なのかを突き止めるのがはるかに簡単になります。変更を /etc/ssh/sshd_config
に戻すことを忘れないでください
解決策 3:
-l
を追加するのを忘れたため、このエラーを受け取りました オプション。ローカルのユーザー名がリモート システムのものと同じではありませんでした。
これはあなたの質問への回答ではありませんが、私の問題に対する回答を探してここに来ました。
解決策 4:
Ubuntu AMI に基づく新しいインスタンスでこのメッセージを受け取りました。 -i オプションを使用して PEM を提供していましたが、まだ「許可が拒否されました (公開鍵)」と表示されていました。
私の問題は、正しいユーザーを使用していなかったことです。 [email protected] で ssh を実行すると、通常どおり動作しました。
解決策 5:
ssh -v
より読みやすいもの (もちろん私の意見では) tail -f /var/log/auth.log
です .接続しようとしているときに、接続しようとしているサーバーで実行する必要があります。エラーは平文で表示されます。
これは私の問題を解決するのに役立ちました:
<ブロック引用>xx.yy.com のユーザー [ユーザー名] は、ユーザーのグループがどれも AllowGroups にリストされていないため許可されません