SSH(Secure Shell)是一种加密的网络协议,用于在网络上安全地传输数据。它被广泛用于远程登录和执行命令。然而,有时候当我们尝试使用SSH登录时,可能会遇到错误消息Permission denied (publickey)导致登录失败。这种情况可能由多种原因引起。在本文中,我们将探讨导致SSH登录失败的可能性,并提供解决方案。

1. SSH密钥不匹配

这是最常见的原因之一。当SSH客户端尝试使用公钥进行身份验证时,如果公钥与服务器上的私钥不匹配,就会导致登录失败。为了解决这个问题,您需要确保在服务器上正确配置了公钥,并且客户端使用的私钥与之匹配。

2. SSH密钥权限不正确

另一个可能性是私钥文件的权限不正确。私钥文件应该只能被所有者读取和写入,否则SSH客户端会拒绝使用它进行身份验证。您可以使用以下命令更改私钥文件的权限:

chmod 600 ~/.ssh/id_rsa

3. SSH服务配置错误

有时候,SSH服务器的配置可能导致登录失败。确保SSH服务器配置正确,并且允许使用密码和公钥进行身份验证。您可以检查SSH服务器的配置文件(通常是/etc/ssh/sshd_config)并确保以下3个选项被如下正确设置:

PubkeyAuthentication yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
KbdInteractiveAuthentication yes

重启ssh服务:sudo systemctl restart sshd

4. 公钥未添加到服务器的authorized_keys文件中

如果您的公钥未添加到服务器的authorized_keys文件中,那么SSH服务器将无法验证您的身份。您可以使用以下命令将本地公钥添加到服务器的authorized_keys文件中:

ssh-copy-id ubuntu@10.184.193.115

或,直接copy本地的公钥到服务器的authorized_keys文件中,且确保文件权限如下:

-rw------- 1 ubuntu ubuntu 1155 Mar 14 08:51 .ssh/authorized_keys

5. SSH密钥损坏

最后一种可能性是SSH密钥本身损坏。如果您怀疑密钥已损坏,可以尝试生成一个新的密钥对,并将公钥添加到服务器上。
以下命令用于产生密钥:

ssh-keygen -t rsa -b 4096

总的来说,当遇到SSH登录失败并出现“Permission denied (publickey)”错误时,您可以首先检查以上可能性并尝试相应的解决方案。通过仔细排除问题,您应该能够成功登录到SSH服务器。祝您使用SSH愉快!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐