jenkins配置ssh的时候测试连接出现Algorithm negotiation fail

背景:当jenkins升级后,同时ssh插件也升级,测试ssh连接的时候

出现的问题:

        com.jcraft.jsch.JSchAlgoNegoFailException: Algorithm negotiation fail: algorithmName="server_host_key" jschProposal="ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256" serverProposal="ssh-rsa,ssh-dss"

原因分析:

        是因为ssh插件升级,jsch包也升级了,当jsch的版本从0.1.x升级到0.2.x的时候,禁用了ssh-rsa,ssh-dss算法,而linux服务器的版本不变,linux支持的算法和升级的jsch算法不一致导致的。其中 jschProposal 是我们的Jenkins SSH插件启用的算法列表,而 serverProposal 是服务端支持的算法列表。

解决方法:

       1  启动的时候加上这两个参数:-Djsch.client_pubkey=ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256  -Djsch.server_host_key=ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,rsa-sha2-512,rsa-sha2-256

-Djsch.
### Jenkins 配置 SSH 服务器教程 在 Jenkins配置 SSH 服务器,可以通过 Publish Over SSH 插件实现自动上传构建文件以及执行远程脚本。以下是详细的配置说明: #### 1. 安装 Publish Over SSH 插件 首先需要确保 Jenkins 环境中已安装 **Publish Over SSH** 插件。如果没有安装,可以进入 Jenkins 的插件管理页面进行安装。 ```plaintext 系统管理 -> 插件管理 -> 可选插件 -> 搜索 "Publish Over SSH" -> 安装 ``` #### 2. 配置 SSH 服务器 完成插件安装后,进入 Jenkins 系统配置页面进行 SSH 服务器的设置[^1]。 #### 3. 配置系统全局设置 进入 Jenkins 的系统配置页面,找到 **Publish over SSH** 部分并进行以下操作: - **SSH Servers**: 点击“添加”按钮新增一个 SSH 服务器配置。 - **Name**: 输入服务器名称,用于标识该 SSH 服务器。 - **Hostname**: 填写目标 SSH 服务器的 IP 地址或域名。 - **Username**: 填写具有权限访问目标服务器的用户名。 - **Remote Directory**: 设置远程服务器上的工作目录,Jenkins 将在此目录下执行命令和上传文件。 - **Port**: 默认为 22,如果目标服务器使用其他端口,请根据实际情况修改。 - **Authentication**: 选择认证方式(密码或密钥)。如果使用密钥认证,需提前生成公私钥对,并将公钥配置到目标服务器的 `~/.ssh/authorized_keys` 文件中[^2]。 #### 4. 测试连接 在完成上述配置后,点击“Test Configuration”按钮测试与目标 SSH 服务器的连接是否成功。如果测试失败,请检查网络连通性、SSH 端口开放情况以及用户权限。 #### 5.Jenkins 任务中使用 SSH 配置 在具体的 Jenkins 构建任务中,可以使用以下步骤配置 SSH 相关操作: - 进入任务配置页面,找到 **Post-build Actions** 部分。 - 添加一个新的动作:**Send files or execute commands over SSH**。 - **SSH Server**: 选择之前配置好的 SSH 服务器。 - **Source files**: 指定需要上传到远程服务器的文件路径(支持通配符)。 - **Remove prefix**: 如果需要从源文件路径中移除某个前缀,则在此处填写。 - **Exec command**: 配置需要在远程服务器上执行的命令。例如,启动或重启应用程序的脚本[^3]。 ```bash source /etc/profile project=你的应用名 dir=你应用存放的目录 pid=$(ps -ef | grep "$dir/$project" | grep -v grep | awk '{print $2}') if [ -n "$pid" ]; then kill -9 $pid fi nohup java -Xms64m -Xmx512m -XX:PermSize=32m -XX:MaxPermSize=512m -jar $dir/$project --spring.profiles.active=dev > /dev/null 2>&1 & ``` #### 6. 保存并验证 完成所有配置后,保存任务并运行一次构建,观察日志输出以确认文件是否成功上传及命令是否正确执行。 --- ### 注意事项 - 确保目标服务器的防火墙规则允许来自 JenkinsSSH 连接。 - 如果使用密钥认证,请妥善保管私钥文件,并确保其权限为 `600`。 - 执行远程命令时,注意脚本的兼容性和环境变量的正确配置。 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值