SSH连接时出现Permission denied (publickey)
错误
Permission denied (publickey)
问题描述
在用Linux终端使用ssh root@server_ip来连接到远程服务器时,出现Permission denied (publickey).提示
问题原因
首先ssh连接服务器是需要一对秘钥的,包括私钥和公钥,私钥(/.ssh/id_rsa)保存在本地服务器上,而公钥(/.ssh/id_rsa.pub)保存在远程服务器上(~/.ssh/authorized_keys文件内)。
当使用ssh进行连接时,本地向远程服务器发起连接,服务器会随机生成一个字符串发送给登陆的用户(发起登陆的客户端),用户对该字符串使用私钥加密之后发送给服务器,服务器使用公钥对加密后的字符串解密,如果解密后的字符串与之前发送给客户端的字符串一致,则判断为登陆成功。
综上,Permission denied(publickey)的问题可能如下
1、远程服务器没有添加公钥
2、远程服务器公钥文件夹权限错误
一、公钥没有添加
如果服务器端根本就没有添加公钥是断然不可能通过认证的
Solution
客户端已经有秘钥对:通过其它方式登录到远程服务器,查看./ssh/authorized_keys文件中是否添加了公钥,若没有可直接将公钥内容拷贝到该文件末尾/.ssh文件夹,将.ssh文件夹内id_rsa.pub的内容拷贝到服务器上的
客户端没有秘钥对:通过ssh-keygen命令生成秘钥对,默认文件夹是./ssh/authorized_keys文件末尾(若服务器上./ssh/authorized_keys不存在则也可以使用ssh-keygen来生成文件结构)
二、远程服务器.ssh权限问题
远程服务器~/.ssh文件夹及其文件权限不对,包括
1、authorized_keys文件权限
2、.ssh文件夹权限
3、.ssh文件夹所有权
Solution
通过其它方式登录到远程服务器,如果是阿里云则可以在网页中通过验证之后打开一个终端,然后进行如下操作
- 更改文件所有权
1 | $ chown -R your_user:your_user ~/.ssh |
- 更改文件夹权限
1 | $ chmod 700 ~/.ssh |
- 更改authorized_keys文件权限
1 | $ chmod 600 ~/.ssh/authorized_keys |
参考文献
原文链接: https://www.delta1037.cn/2017/Bugsfix/Permissiondenied(publickey)/
版权声明: 转载请注明出处.