项目配置好以后点击检测,显示
远程目标机器免密码登录失败
原因:
远程目标机器: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
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
部署新公钥:将新生成的公钥(默认位于 ~/.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 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。