Jenkins管道:SSHAgent远程ssh

Ric*_*o79 6 ssh jenkins jenkins-pipeline

在Jenkins2.0管道中,我需要远程ssh来定位机器.我的旧方法是使用"使用ssh在远程主机上执行shell脚本".我想指定用户名和密码.

我已经读到了groovy方法应该是这样的

sshagent(['RemoteCredentials']) {
    sh 'ssh -o StrictHostKeyChecking=no -l remoteusername remotetarget uname -a'
  }
Run Code Online (Sandbox Code Playgroud)

RemoteCredentials:它是带密码的私钥

有没有办法用用户名/密码远程凭证制作ssh?sshagent不支持用户名/密码身份验证

里卡多

Ste*_*ain 6

所以不幸的是,你是对的.

看起来ssh-agent-plugin仅支持通过Jenkins的Credentials Management区域添加的存储用户,密码,公钥证书.请参阅此单元测试,该测试验证ssh-agent是否基于公钥正常工作.插件中不存在未经测试的功能以支持用户+密码身份验证.

如果可以,请切换到基于公钥的身份验证.如果由于某种原因,你不能切换......你COULD安装sshpass您詹金斯中,但通常认为这是不好的做法.

node {
    stage 'Does sshpass work?'
    sh 'sshpass -p \'password\' ssh user@host "ls; hostname; whois google.com;"'
}
Run Code Online (Sandbox Code Playgroud)

  • 即使您使用此方法,请记住至少使用[withCredentials](https://wiki.jenkins.io/display/JENKINS/Credentials+Binding+Plugin)不在Jenkins文件中公开密码. (2认同)