SSH RSA公钥登录失效

版权声明:本文为博主原创文章,转载请注明出处。

前言

SSH免密登录早已是开发过程中的基本操作,最近在连接一台CentOS的服务器时遇到了无法使用公钥登录的情况。

1
2
Ojos-MacBook-Pro:~ hsojo$ ssh root@192.168.*.*
root@192.168.*.*'s password:

公钥早已在服务端添加信任,但连接时反复提示输入密码。

排查

对比两台机器连接的日志,尝试找出原因。

  • 登录失败机器的日志
1
2
3
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/hsojo/.ssh/id_rsa RSA SHA256:**************
debug1: send_pubkey_test: no mutual signature algorithm
  • 登录成功机器的日志
1
2
3
4
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/hsojo/.ssh/id_rsa RSA SHA256:**************
debug1: Server accepts key: /Users/hsojo/.ssh/id_rsa RSA SHA256:**************
Authenticated to 192.168.*.* ([192.168.*.*]:22) using "publickey".

可知问题关键在于send_pubkey_test: no mutual signature algorithm这部分。

经过一番搜索,可知OpenSSH 客户端默认不再支持ssh-rsa算法进行公钥登录。

解决方案

临时方案

  • 连接时增加允许ssh-rsa公钥类型的选项
1
ssh root@192.168.*.* -o "PubkeyAcceptedKeyTypes +ssh-rsa"

永久方案

  • 将以下内容写入~/.ssh/config
1
PubkeyAcceptedKeyTypes +ssh-rsa

Comments