最近有小伙伴在使用ubuntu远程的时候一直无法远程,刚开始以为时openssh的问题,升级完openssh之后,再次远程时还是提示以下报错。
原因分析
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密钥本身损坏。如果您怀疑密钥已损坏,可以尝试生成一个新的密钥对,并将公钥添加到服务器上。
以下命令用于产生密钥:
解决方法:
1.登录现在无法ssh远程的这台主机,打开sshd的配置文件,找到PasswordAuthentication这行。
vi /etc/ssh/sshd_config
2.将PasswordAuthentication no这行的no改为yes或者直接注释调这一行(蜜蜂这里就直接注释了)
3.重启sshd服务
sudo systemctl restart sshd
4.回到之前的10.42.251.150机器后再次ssh 10.42.251.150此时可以正常连接上了: