walle-web 由于ssh安全升级带来的连接远程服务器失败

运维 · best · 于 3天前 发布 · 27 次阅读

症状

项目配置好以后点击检测,显示

远程目标机器免密码登录失败
原因:

远程目标机器:192.168.1.100 错误:Authentication failed.
解决建议:

在宿主机中配置免密码登录,把宿主机用户walle的~/.ssh/id_rsa.pub添加到远程目标机器用户192.168.1.100的~/.ssh/authorized_keys。了解更多:http://walle-web.io/docs/troubleshooting.html

辩证

登录目标服务器,查看实时日志。

sudo journalctl -u sshd -f

返回拒绝的原因

userauth_pubkey: signature algorithm ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

定位

执行 ssh -V检查目标服务器ssh版本。

  • 发起服务器:OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
  • 目标服务器: OpenSSH_10.0p2, OpenSSL 1.1.1c 28 May 2019

这个错误的核心原因是:您要连接的服务器上安装了较新版本的 OpenSSH(通常 >= 8.7 或 8.8)。

OpenSSH 社区已正式弃用 ssh-rsa算法,主要原因是其依赖的 SHA-1 哈希算法存在严重的安全漏洞。自 OpenSSH 8.2 版本起,官方开始警告其风险,并在其后的版本(如 8.8 及更新版本)中默认禁用了该算法。

验证当前支持的算法

查看服务器支持的公钥算法:

ssh -Q key

查看服务器 sshd 实际运行时的默认值:

sudo sshd -T | grep pubkeyacceptedalgorithms

解决办法

‼️确定配置文件

yum 安装和 手工编译安装路径不一样,配置文件也不一样,甚至测试方法也有区别。

以手工编译为例,通常位置/usr/local/openssh/etc/sshd_config

验证配置语法:

# 指定配置文件路径测试(关键!)
sudo /usr/local/openssh/sbin/sshd -t -f /usr/local/openssh/etc/sshd_config

处理目标服务器

临时方案:在服务器端重新启用 ssh-rsa(不推荐)

编辑服务器配置:在 /etc/ssh/sshd_config文件中添加或修改以下行:

PubkeyAcceptedAlgorithms +ssh-rsa

重启 SSH 服务:

sudo systemctl restart sshd

⚠️ 这个方案有很多资料在提,但是我没有实验成功,不较劲了。

首选方案:升级到更安全的密钥算法

最根本的解决方法是生成并使用更现代的密钥对,例如 ed25519或 ecdsa。这是目前最被鼓励的做法,能从根本上提升安全性 。 生成新密钥(例如,使用 ed25519算法):

ssh-keygen -t ed25519

部署新公钥:将新生成的公钥(默认位于 ~/.ssh/id_ed25519.pub)添加到服务器的 ~/.ssh/authorized_keys文件中。

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ip

⚠️ 删除旧密钥:在确认新密钥可以正常登录后,建议从服务器的 authorized_keys文件中移除旧的 ssh-rsa公钥。

本文由 best 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册