最近有小伙伴在使用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此时可以正常连接上了:
总结
到此这篇关于ubuntu无法ssh远程,提示'permission denied (publickey)'的解决方法的文章就介绍到这了,更多相关ssh远程,提示'permission denied (publickey)'内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论