SSH连接 Permission denied (publickey)

一、问题描述

在用Linux终端使用ssh root@server_ip来连接到远程服务器时,出现Permission denied (publickey).提示

二、问题原因

2.1 ssh连接

  1. 本地生成的一对秘钥,私钥(~/.ssh/id_rsa)和公钥(~/.ssh/id_rsa.pub
  2. 公钥(~/.ssh/id_rsa.pub)应该保存在远程服务端的已认证的秘钥文件内(~/.ssh/authorized_keys
  3. 连接过程:
    • 1、本地向远程服务端发起连接
    • 2、服务端随机生成一个字符串发送给发起登录的本地端
    • 3、本地对该字符串使用私钥(~/.ssh/id_rsa)加密发送给服务端
    • 4、服务端使用公钥(~/.ssh/id_rsa.pub)对私钥加密后的字符串进行解密
    • 5、服务端对比解密后的字符串和第一次发送给客户端未加密的字符串,若一致则判断为登录成功

2.2 问题分析

分析登录过程,Permission denied(publickey)的问题可能如下
1、远程服务器没有添加公钥(无法认证)
2、远程服务器公钥文件夹权限错误(.ssh.ssh/authorized_keys需要保证只有用户自己有权限,否则验证无效)

三、问题解决

3.1 公钥没有添加

如果服务器端根本就没有添加公钥是断然不可能通过认证的

Solution

1、客户端已经有秘钥对:通过其它方式登录到远程服务器,查看~./ssh/authorized_keys文件中是否添加了公钥,若没有可直接将公钥内容拷贝到该文件末尾
2、客户端没有秘钥对:通过ssh-keygen命令生成秘钥对,默认文件夹是~/.ssh文件夹,将.ssh文件夹内id_rsa.pub的内容拷贝到服务器上的~./ssh/authorized_keys文件末尾(若服务器上~./ssh/authorized_keys不存在则也可以使用ssh-keygen来生成文件结构)

3.2 远程服务器.ssh权限问题

远程服务器~/.ssh文件夹及其文件权限不对,包括
1、~./ssh/authorized_keys文件权限
2、~/.ssh文件夹权限
3、~/.ssh文件夹所有权

Solution

通过其它方式登录到远程服务器,如果是阿里云则可以在网页中通过验证之后打开一个终端,然后进行如下操作

  • 更改文件所有权
$ chown -R your_user:your_group ~/.ssh  
//我用root登录,your_user是root
  • 更改.ssh文件夹权限
$ chmod 700 ~/.ssh
  • 更改.ssh/authorized_keys文件权限
$ chmod 600 ~/.ssh/authorized_keys

四、备注

感谢评论区提醒,上文所有的~符号均为英文符号

五、参考文献

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charmve

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值