问题
在我新安装了一台ubuntu22.04的服务器时,配置远程服务器
正常情况下,只要把握本机的公钥写到被远程主机对应用户的 .ssh/authorized_keys
文件中就好了
但是,今天发现,虽然设置进去了,但是远程还是提示需要密码
但是并不是所有的主机是这样的,同样是ubuntu22.04的服务器还是能够免密进入的
没办法,只能查日志
查看syslog日志,没任何日志
接着找有没有认证相关的日志
发现有个 auth.log
,日志
复现问题
发现了报错
Mar 29 17:46:22 ubuntu sshd[14792]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
Mar 29 17:46:22 ubuntu sshd[14792]: Connection closed by authenticating user admin xxx.xxx.xxx.xxx port 38420 [preauth]
提示我们的 ssh-rsa
类型不在 PubkeyAcceptedAlgorithms
中
也就是不支持RSA算法的密钥访问
像这样的通常是发生在SSH服务器配置了更严格的安全策略,以禁用旧的、不安全的算法。
解决方法
修改SSH服务器的配置文件(通常是 /etc/ssh/sshd_config
),在 PubkeyAcceptedAlgorithms
选项中添加 ssh-rsa
.
通常 /etc/ssh/sshd_config
文件中并没有 PubkeyAcceptedAlgorithms
选项,所以,只需要在文末追加配置就可以了
echo "PubkeyAcceptedAlgorithms +ssh-rsa" >> /etc/ssh/sshd_config
注意: 在添加之前,确保有 +
号在前面,这表示添加 ssh-rsa
到已有的列表中,而不是替换所有算法
然后重启服务就好了
systemctl restart sshd
标签:sshd,--,rsa,ssh,preauth,PubkeyAcceptedAlgorithms,日志
From: https://www.cnblogs.com/guangdelw/p/18104346