Jenkins升级Java及LTS版本后SSH连接初始化失败求助
Jenkins升级后SSH发布失败的解决方案
问题原因
升级Java到11.x和Jenkins LTS到2.4xx后,新版Jsch插件默认禁用了ssh-rsa、ssh-dss这类旧的服务器主机密钥算法,而部分旧服务器仅支持这些算法,导致密钥算法协商失败。
可行解决办法
方法1:通过JVM参数启用旧算法(快速生效,无需修改服务器)
- 找到Jenkins的启动配置文件(Windows下通常是
jenkins.xml,Linux下可能是/etc/default/jenkins或系统服务配置) - 在JVM启动参数中添加:
-Dorg.jcraft.jsch.server_host_key=ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256 - 重启Jenkins服务,再测试SSH连接
方法2:修改目标服务器SSH配置(长期推荐方案)
- 登录连接失败的服务器,编辑
/etc/ssh/sshd_config文件 - 添加或更新以下配置:
HostKeyAlgorithms +ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256 - 重启sshd服务:
# 系统d服务的服务器 systemctl restart sshd # 旧版SysV服务的服务器 service ssh restart - 回到Jenkins测试连接
方法3:调整Publish Over SSH插件全局配置
- 进入Jenkins「管理Jenkins」→「Configure System」→「Publish over SSH」
- 展开对应SSH服务器配置的「Advanced」选项
- 在「Server Host Key Algorithms」字段中,手动追加
ssh-rsa,ssh-dss,与原有算法用逗号分隔 - 保存配置后测试连接
内容的提问来源于stack exchange,提问作者Raghav Tallam
相关产品推荐
相关产品推荐

