当 UsePAM 设置为“no”时,SSH 公钥身份验证失败

Eri*_*ner 26 linux ssh

要禁用密码身份验证,我在我的 sshd_config

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
Run Code Online (Sandbox Code Playgroud)

当我尝试使用我的私钥登录时,我得到

Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

如果我然后更改UsePAMyes我可以使用我的私钥登录。为什么?

我正在从 OSX 连接到 Ubuntu 12.04 64 位主机

ssh -i ~/.ssh/deploy -l deploy localhost -p 2222 -v
Run Code Online (Sandbox Code Playgroud)

这是详细的ssh输出:

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/<user>/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 2222.
debug1: Connection established.
debug1: identity file /Users/<user>/.ssh/deploy type 1
debug1: identity file /Users/<user>/.ssh/deploy-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 50:db:75:ba:11:2f:43:c9:ab:14:40:6d:7f:a1:ee:e3
debug1: Host '[localhost]:2222' is known and matches the RSA host key.
debug1: Found key in /Users/<user>/.ssh/known_hosts:2
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
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/<user>/.ssh/key1
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: /Users/<user>/.ssh/deploy
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

Ste*_*han 19

如果没有 PAM(可插入身份验证模块),则需要更复杂的 ssh 配置来进行身份验证。你正在寻找这个,实际上:

# grep Password /etc/ssh/sshd_config 
PermitEmptyPasswords no
PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)

这将禁用密码登录。确保您正确建立了公钥设置。

  • 这不是真的。事实上,许多指南建议将 `ChallengeResponseAuthentication`、`PasswordAuthentication` 和 `UsePAM` 都设置为 `no`,并且只使用公钥认证。我从来没有在这样的环境中工作过,所以我不能轻易给出它还不能正常工作的真正原因。 (4认同)
  • 这就是为什么我首先将其设置为 no 的原因,因为我找到的每个指南都这样做了! (3认同)

han*_*xue 11

您的用户帐户是否被锁定?您可以解锁用户帐户

passwd -u username

或锁定用户帐户但启用 PAM:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM yes
Run Code Online (Sandbox Code Playgroud)