![SSH - 权限被拒绝(公钥) - 在一个节点的情况下不起作用](https://linux22.com/image/156172/SSH%20-%20%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D%EF%BC%88%E5%85%AC%E9%92%A5%EF%BC%89%20-%20%E5%9C%A8%E4%B8%80%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我有 3 个节点:节点 A、B 和 C。A 想通过 ssh 连接到 B 和 C。 B 和 C 是相同的服务器。 A 可以连接到 B,但不能连接到 C。
ssh user@node
我看到的错误:
Permission denied (publickey).
我试过了:
- ida_rsa 和authorized_keys 文件上的所有权设置正确,并且在服务器 B 和 C 上相同
- 两个节点上的 /etc/ssh/sshd_config 文件也是相同的
- 我可以
telnet
通过端口 22 连接到节点 B 和 C,所以这也不是防火墙问题
我错过了什么?我还应该检查什么?
到目前为止,我还没有看到是什么禁止我连接到节点 C。
答案1
对于任何偶然发现这个主题的人,我已经找到了问题的根源。我写下这一点是因为我还没有找到提出此解决方案的讨论。
- 在 sshd_config 文件中,系统不会提示用户输入任何密码:
PasswordAuthentication no
- 然而,用户在节点 C 上通常受到密码保护,但在 B 上则不受密码保护
B节点:
# passwd --status user
user LK 2017-09-27 0 99999 7 -1 (Empty password.)
C节点:
# passwd --status user
user LK 2019-04-03 0 99999 7 -1 (Password locked.)
解决方案:
# passwd -d user
Removing password for user user.
passwd: Success
现在ssh
工作正常。
我检查文件时发现了问题/var/log/messages
:
Connection from X.X.X.X port 60408 on Y.Y.Y.Y port 22
User user not allowed because account is locked
input_userauth_request: invalid user user [preauth]
Connection closed by X.X.X.X port 60408 [preauth]
答案2
好吧,我解决了。要使用的名称不是主机名,而是您访问桌面时使用的用户名。或者您可以使用 root,但在这种情况下必须在 sshd_config 中激活它。示例 john@ip 地址