前言
SSH免密登录早已是开发过程中的基本操作,最近在连接一台CentOS的服务器时遇到了无法使用公钥登录的情况。
Ojos-MacBook-Pro:~ hsojo$ ssh root@192.168.*.*
root@192.168.*.*'s password:
公钥早已在服务端添加信任,但连接时反复提示输入密码。
排查
对比两台机器连接的日志,尝试找出原因。
- 登录失败机器的日志
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/hsojo/.ssh/id_rsa RSA SHA256:**************
debug1: send_pubkey_test: no mutual signature algorithm
- 登录成功机器的日志
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公钥类型的选项
ssh root@192.168.*.* -o "PubkeyAcceptedKeyTypes +ssh-rsa"
永久方案
- 将以下内容写入
~/.ssh/config
PubkeyAcceptedKeyTypes +ssh-rsa