SSH无密码登录失败之DSA算法问题

场景

  A机器将自己ssh生成的dsa.pub公钥给B机器后,A机器再登陆B机器发现依旧需要输入密码。

  检查~/.ssh目录和~/.ssh/*的权限均无问题

问题分析

检查B机器日志,ubuntu的ssh日志为/var/log/auth.log,centos的ssh日志为/var/log/secure

tail /var/log/auth.log -n 20

发现如下语句,dsa算法不属于ssh接受的公钥算法类型

原因

在Openssh 7.0及以上版本中,由于DSA的脆弱性,已经默认不支持DSA算法了(https://www.openssh.com/legacy.html)

 解决方案

 

1)替换加密算法为rsa,重新设置密钥

  • 在A机器生成rsa算法新密钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa.pub
  • 将A机器生成的新密钥上传到B机器中:
scp ~/.ssh/id_rsa.pub user@ip:/home/user/.ssh/id_A_rsa.pub
  • 将A机器密钥加入到B机器的authorized_keys文件中,在B机器中:
cat ~/.ssh/id_A_rsa.pub ~/.ssh/authorized_keys
  • 再次测试,使用B机器登录A机器,可以免密钥登陆

2)配置openssh支持dsa算法

  • 打开ssh配置文件
vi /etc/sshd/sshd_config
  • 添加接受算法
PubkeyAcceptedKeyTypes=+ssh-dss
  • 重启sshd服务
systemctl restart sshd 或 service sshd restart

 

你可能感兴趣的:(Linux)