【SSH】免密连接SSH相关问题 Jeston Nano

基本流程

  1. 控制端(本地)生成公钥和私钥;
  2. 将公钥传至被控制端(远程服务器);

具体流程参考这篇文章

问题解决

如果做完上面那一步,你已经可以成功免密连接上SSH,那么恭喜你,但是实际情况中总是会遇到各种各样的问题,下面给出一些排除问题的思路。

  1. 在本地SSH配置文件添加IdentityFile路径
    Host 192.168.1.100
      HostName 192.168.1.100
      User timer
      IdentityFile C:\Users\xxx\.ssh\id_rsa
    
    私钥地址应填写到了.ssh\id_rsa这个文件的路径,而不能仅仅是.ssh的路径。
  2. 检查远远程服务器端~/.ssh~/.ssh/authorized_keys的权限
    原因是SSH不希望用户目录和~/.ssh目录对组有写权限。
    确认.ssh目录权限必须是700在这里插入图片描述
    确认authorized_keys文件权限必须是600在这里插入图片描述
    如果不是,执行以下代码
    chmod 700 ./.ssh
    chmod 600 ./.ssh/authorized_keys
    
  3. 修改StrictModes属性为no
    /etc/ssh/sshd_config文件中StrictModes属性设置为no,如果没有自行添加
    StrictModes no
    
  4. 启用AuthorizedKeysFile配置
    /etc/ssh/sshd_config文件中配置AuthorizedKeysFile路径为%h/.ssh/authorized_keys注意前面是%h,不是~
    AuthorizedKeysFile      %h/.ssh/authorized_keys
    
  5. 确认PubkeyAuthentication配置开启
    确认/etc/ssh/sshd_config文件中PubkeyAuthentication属性设置为yes
    PubkeyAuthentication yes
    
  6. 重启SSH服务
    /etc/ssh/sshd_config文件修改确认后,执行以下命令可验证配置文件语法是否正确(非必需)
    sshd -t
    
    执行以下命令重启SSH服务
    service sshd restart 
    
    然后,重试SSH登陆命令
  7. 如果没有解决可尝试使用执行sudo cat /var/log/secure查看系统的安全日志,根据具体日志内容解决。
  8. Could not load host key: /etc/ssh/ssh_host*

希望大家可以顺利解决问题,对我而言最重要的是修改StrictModes属性为no和启用AuthorizedKeysFile配置


参考资料

  1. 通过添加公钥实现ssh免密登录服务器(authorized_keys、sshd_config)_autodl免密登陆_Data-Mining的博客-CSDN博客
  2. vscode远程开发,含ssh密钥配置(免密登录)、客户端多私钥配置。_vscode ssh 密钥-CSDN博客
  3. Sshd_config配置文件详解–很实用_sshd_config是什么文件-CSDN博客
  4. Linux之sshd_config配置文件说明及实践-CSDN博客
  5. Could not load host key: /etc/ssh/ssh_host*_ecdsa_ke-CSDN博客
  6. Ubuntu 设置 SSH 通过密钥登录 - 知乎
  7. 配置vscode 远程开发+ 免密登录 - 知乎
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值