web-dev-qa-db-ja.com

SSH公開鍵認証-サーバーは鍵を受け入れますが、認証は成功しません

公開鍵認証を使用して接続するのに問題がある友人を、私が管理しているサーバーに接続するのを手伝っています。公開鍵認証は、他の数人のユーザーに対しては正常に機能します。もちろん、私の友人の公開鍵はサーバー上のauthorized_keys-fileにあります。

debug1: Host 'xxxxx' is known and matches the RSA Host key.
debug1: Found key in /home/xxx/.ssh/known_hosts:3
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue:
publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information
debug1: Unspecified GSS failure.  Minor code may provide more information
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/xxx/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentications that can continue:
publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering RSA public key: [email protected]
debug1: Authentications that can continue:
publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/xxx/.ssh/id_dsa
debug1: Trying private key: /home/xxx/.ssh/id_ecdsa
debug1: Next authentication method: password

次の行は私には意味がありません

Server accepts key: pkalg ssh-rsa blen 279

サーバーは公開鍵が完全に正しいと考えているように見えるのに、なぜユーザーを認証する代わりにパスワード認証を続けるのでしょうか。

6
nip3o

クライアント側のログ/デバッグ出力を表示していると思います。サーバー側のログを見ると、通常は理由サーバーが公開鍵認証の試行を拒否したことについての詳細がわかります。

例えば。ユーザーのホームディレクトリまたは.sshディレクトリに対する安全でないアクセス許可。

6
RedGrittyBrick

私の場合、問題は、接続しようとしたユーザーがrootであり、root sshログインを無効にしていたことでした(おそらく誰もが行う必要があります)。したがって、友達が正しい非rootユーザーアカウントを介して接続しようとしていることを確認してください。

4
Geoff

私は最近、GerritのSSHインターフェースでこれを経験しました。問題は、私のローカルSSHエージェントがGerritサーバーに多数の異なるキーを提供し、ある程度の制限の後、サーバーがそれ以上のキーの受け入れを拒否したことでした(ただし、Server accepts keyで応答しました)。この動作がGerritに固有のものなのか、一般的なOpenSSHのものなのかはわかりません。

修正は、~/.ssh/configで正しいキーを強制的に選択することでした。

Host gerrit.example.org
  IdentityFile ~/path/to/my_key
  IdentitiesOnly yes

~/path/to/my_key.pubが存在することを確認した後(ssh-keygen -f ~/path/to/my_key -y > ~/path/to/my_key.pubで作成できます)、sshエージェントはパスフレーズを再入力せずにキーを提供できましたが、他のキーは提供しませんでした。

1
Tgr