解决SSH免密连接时没使用正确的秘钥去匹配问题

964 阅读1分钟

本文将解决以下问题:

  • SSH免密登录无效?
  • 正确配置服务器文件权限chmod 700 .sshchmod 700 authorized_keys,以及复制粘贴的对应的公钥到authorized_keys里,还是无法免密访问?
  • SSH使用错误的私钥进行连接?
  • SSH免密连接时没使用正确的秘钥去匹配?
  • SSH免密连接时使用了不正确的私钥?

首先请确保你以正确生成并配置好了相关设置,包括本地和远程服务器

  1. 本地成功生成公钥和私钥
  2. 公钥信息已粘贴至服务器~/.ssh/authorized_keys
  3. 已更改.sshauthorized_keys的权限,建议755
  4. 保存后重启服务systemctl restart sshd.service或者service sshd restart

在此基础上依旧无法免密访问才符合以下所描述的免密登录失败情况

第一步

查看登录细节

ssh -vvv username@hostname

image-20220403002854852

在返回的信息中找到 attempt 表示连接时尝试使用的秘钥,如果没有使用到对应正确的秘钥,则表示免密失败的原因就是私钥使用不正确

image-20220403003058274

解决办法
方法一

适用于linux系统

ssh-copy-id [-i sshfile] username@hostname

image-20220403003354131

ali:表示生产密钥匙的自定义名称,默认是id_ras,生成时不设置自定义名称则也是id_ras

方法二

都适用

连接时带上对应私钥位置的参数
ssh -i /path/to/rsa.key UserNameA@RemoteHostName
​
配置config文件,在客户端的.ssh/下创建config(一般默认会有)
​
可以配置多个主机的详细参数
​
配置示例
Host host1
  HostName 126.x7.6x.21
  User root
  IdentityFile /path/to/key1.key
Host host2
  HostName 126.x7.6x.22
  User root
  IdentityFile /path/to/key2.key
  
2022/5/6号修改

IdentityFile如果提示找不到,需要给绝对地址,如C:\Users\zhouj889\.ssh