解决ssh连接无法免密登陆
背景:dtdev进入需要输入密码,一开始以为是同事动过authorized_keys,把我的公钥移除了,问了同事说没动过,重启了服务器的ssh不行;重新生成新的公钥上传也不OK,密码又找不到。
其实我有猜测是上周MacOS升级到13所致,经人指点,说有可能是匹配算法有问题,让我执行看连接日志。
执行:ssh root@xxx.xx.xxx.xxx -vvv,经指点,看到图中这行:no mutual signature algorithm
从这篇文章可以看到:受影响的已知操作系统有OpenSSH 8.8或者更高的版本,会禁用使用 SHA-1 哈希算法的 RSA 签名。执行ssh -V,可以看到我的OpenSSH版本为9,那可能确实是OpenSSH版本的原因吧。
原因:由于各种安全漏洞,RSA SHA-1 哈希算法正迅速在操作系统和 SSH 客户端中被弃用,其中许多技术现在完全拒绝使用该算法。
以下解决方案二选一:
1、重新启用RSA
在Mac目录/etc/ssh下找到ssh.config文件,新增一行:
PubkeyAcceptedKeyTypes +ssh-rsa
说明:可通过ssh -vvv前几行确定本机连接读取的是哪个配置文件。
2、使用ECDSA和ED25519算法重新生成密钥,即:
ssh-keygen -t ed25519 -C "your_email@example.com"
其他:
现在不明白的是,如果真的是因为MacOS升级到13导致OpenSSH版本升级,为什么只有这个服务器被影响到了,其他服务器连接就没有问题,就很费解。