项目配置好以后点击检测,显示
远程目标机器免密码登录失败
原因:
远程目标机器: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(通常 >= 8.7 或 8.8)。
OpenSSH 社区已正式弃用 ssh-rsa算法,主要原因是其依赖的 SHA-1 哈希算法存在严重的安全漏洞。自 OpenSSH 8.2 版本起,官方开始警告其风险,并在其后的版本(如 8.8 及更新版本)中默认禁用了该算法。
验证当前支持的算法
查看服务器支持的公钥算法:
ssh -Q key
查看服务器 sshd 实际运行时的默认值:
sudo sshd -T | grep pubkeyacceptedalgorithms
不是 walle2 整体坏了 不是你的 SSH key 本身坏了 是 Rocky Linux 9.7 的 SSH 安全策略 + 老版 walle2(Paramiko / Python 2.7)不兼容
所以才会出现你说的现象:
✅ 其他项目(旧系统 / CentOS 7 / Ubuntu 老版本)都能发布 ❌ 只有 Rocky Linux 9.7 这个不行 ❌ 手动 ssh 可以,walle2 不行
这是典型的“新系统打老客户端”问题。
Rocky Linux 9(和 RHEL 9 一样)做了 3 件事:
Rocky 9 默认 sshd:
ssh-rsa(SHA1)rsa-sha2-256 / rsa-sha2-512而你手动 ssh 成功的证据是:
Server accepts key: pkalg rsa-sha2-512
👉 OpenSSH 客户端支持 👉 Paramiko 老版本不完全支持
Rocky 9 用的是:
crypto-policies = DEFAULT
它会系统级别限制:
Paramiko(尤其 Python 2.7 时代的)经常直接被挡掉。
你这里的路径已经说明一切了:
python2.7
fabric2
paramiko
这套组合在 2026 年 + Rocky 9 环境下,本身就是高风险不兼容。
因为:
| 服务器 | sshd 安全级别 | 结果 |
|---|---|---|
| CentOS 7 / Ubuntu 18 | 宽松 | ✅ walle2 OK |
| Rocky Linux 9.7 | 严格 | ❌ Paramiko 被拒 |
👉 不是你配错了,是时代变了
yum 安装和 手工编译安装路径不一样,配置文件也不一样,甚至测试方法也有区别。
以手工编译为例,通常位置/usr/local/openssh/etc/sshd_config
验证配置语法:
# 指定配置文件路径测试(关键!)
sudo /usr/local/openssh/sbin/sshd -t -f /usr/local/openssh/etc/sshd_config
处理目标服务器
编辑服务器配置:在 /etc/ssh/sshd_config文件中添加或修改以下行:
PubkeyAcceptedAlgorithms +ssh-rsa
重启 SSH 服务:
sudo systemctl restart sshd
⚠️ 这个方案有很多资料在提,但是我没有实验成功,不较劲了。
最根本的解决方法是生成并使用更现代的密钥对,例如 ed25519或 ecdsa。这是目前最被鼓励的做法,能从根本上提升安全性 。 生成新密钥(例如,使用 ed25519算法):
ssh-keygen -t ed25519 -f ~/.ssh/id_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 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。