You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins任务的execute shell命令中使用SSH凭证

Jenkins Execute Shell 调用SSH凭证的实现方案

错误原因

你遇到的报错核心是Jenkins的SSH凭证ID无法直接作为ssh命令的主机参数使用,凭证需要通过Jenkins的凭证绑定机制注入到构建环境后才能调用。

实现方案

自由式任务配置

  • 先安装Credentials Binding插件,该插件支持将凭证内容注入为构建过程的环境变量
  • 进入任务配置页,找到「构建环境」区块,勾选「Use secret text(s) or file(s)」
  • 新增SSH Username with private key类型的绑定,Credential选择你提前配置的my-server-ssh,自定义变量名例如SSH_CRED后保存配置
  • 在Execute Shell中使用注入的变量拼接ssh命令即可:
ssh -i "$SSH_CRED" 你的SSH用户名@目标服务器IP/域名 ls

Pipeline任务配置

直接在Jenkinsfile中通过credentials()相关方法拉取凭证即可,示例如下:

pipeline {
    agent any
    stages {
        stage('执行远程SSH命令') {
            steps {
                withCredentials([sshUserPrivateKey(credentialsId: 'my-server-ssh', keyFileVariable: 'SSH_KEY_PATH')]) {
                    sh 'ssh -i $SSH_KEY_PATH 你的SSH用户名@目标服务器IP/域名 ls'
                }
            }
        }
    }
}

注意事项

  • 需确保Jenkins运行构建的agent节点网络可以连通目标SSH服务器的22端口
  • 目标服务器的~/.ssh/authorized_keys文件中已添加了你配置凭证时使用的公钥
  • 首次连接目标服务器时ssh会弹出主机密钥确认提示导致构建卡住,可在ssh命令中添加-o StrictHostKeyChecking=no参数跳过校验,示例:
ssh -o StrictHostKeyChecking=no -i "$SSH_CRED" 你的SSH用户名@目标服务器IP/域名 ls

内容的提问来源于stack exchange,提问作者Erich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:36:03