前言:OpenSSH 8.8 版本开始将 RSA/SHA1 的签名算法从默认允许的算法列表中移除,导致旧客户端免密SSH或SCP无法生效,只能密码登录。在无法升级SSH旧客户端的情况下,有A/B两个解决方案:
|
1 2 3 4 5 |
版本号: 客户端 [RM2100 /opt/home/admin]# ssh -V Dropbear v2018.76 服务端 C:\Program Files\OpenSSH># ssh -V OpenSSH_for_Windows_8.9p1, LibreSSL 3.4.3 |
方案A、客户端Dropbear选用ecdsa算法,这仍在OpenSSH新版的默认支持列表中:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
Dropbear可以生成的三种算法: ecdsa 【OpenSSH默认支持】 rsa 【OpenSSH需手动开启支持】 dss 【OpenSSH完全不支持】 用dropbearkey生成ecdsa算法的私钥和公钥: [RM2100 /opt/home/admin]# dropbearkey -f ./id_ecdsa -t ecdsa Generating 256 bit ecdsa key, this may take a while... Public key portion is: ecdsa-sha2-nistp256 AAAAE2XXXXXXXXXXXXXXXXXXXXXXgLSA0= admin@RM2100 Fingerprint: sha1!! 38:f1:21:XXXXXXXXXX:ac:77:37 将生成后的公钥添加的OpenSSH服务端,即可免密登录成功(服务端无需开启对ssh-rsa旧算法的支持)。登录命令: [RM2100 /opt/home/admin]# ssh -i ./id_ecdsa 用户名@服务端IP |
方案B、服务端OpenSSH配置允许ssh-rsa旧算法:
|
1 2 3 4 5 |
OpenSSH8.8版本开始将RSA/SHA1的签名算法从默认允许的算法列表中移除,导致Dropbear的RSA密钥无法免密登录SSH或SCP,此时需要在OpenSSH服务端的sshd_config中添加如下2项配置: PubkeyAcceptedAlgorithms +ssh-rsa #允许客户端可使用旧的ssh-rsa公钥认证 HostKeyAlgorithms +ssh-rsa #服务端可提供给客户端ssh-rsa主机密钥#此项非必要:发生在连接建立的初始握手阶段,即在任何用户认证之前,当客户端第一次连接服务器时,服务器会发送其主机密钥并使用该密钥列表中的算法进行签名。简而言之就是服务器使用哪种算法的**服务器凭证(主机密钥)**来证明自己的身份。 服务端开启对ssh-rsa旧算法的支持后,客户端Dropbear使用rsa算法的私钥就可以成功免密登录。登录命令: [RM2100 /opt/home/admin]# ssh -i ./id_rsa 用户名@服务端IP |
参考文章:
- 解决新版Linux系统因禁用ssh-rsa签名算法导致的RSA密钥登录失败 - ECS阿里云
12345在SSH协议中,ssh-rsa签名算法是SHA1的哈希算法和RSA公钥算法的结合使用。由于目前SHA1的哈希算法容易受到攻击,OpenSSH从8.7以后版本开始默认不支持ssh-rsa签名方案。【默认不支持ssh-rsa签名方案并不意味着停止使用RSA密钥,密钥可以通过多种算法进行签名,RSA密钥可以使用rsa-sha2-256(rsa/SHA256)、rsa-sha2-512(rsa/SHA512)等多种签名算法来进行签名,只有ssh-rsa(rsa/SHA1)签名算法被默认禁用】解决方案:使用ECDSA或者DSA等其他加密方式。查看密钥的算法:# ssh-keygen -l -f id_ecdsa
- SSH连接报错'no matching host key type'的解决方案_文心快码
12345678# 仅对特定主机生效Host legacyhost.example.org #仅对指定主机生效HostKeyAlgorithms +ssh-dss #允许客户端接受ssh-rsa主机密钥PubkeyAcceptedKeyTypes +ssh-dss #允许客户端使用ssh-rsa公钥认证# 对所有主机生效Host * #匹配所有主机,建议谨慎使用HostKeyAlgorithms +ssh-dssPubkeyAcceptedKeyTypes +ssh-dss
- dropbear实现免密码ssh登录或scp文件传输-CSDN博客
1234有的ssh服务端可能默认不支持RSA密码算法,导致免密SSH或SCP无法生效,此时需要在SSH服务端的 /etc/ssh/sshd_config 中添加如下2项配置:PubkeyAcceptedAlgorithms +ssh-rsaHostKeyAlgorithms +ssh-rsa即允许SSH服务端公钥密码算法支持RSA。