TLDR:如何 ssh 不同的机器以及在 Jenkins 管道上存储 ssh 凭证的位置(使用 ssh/SSHAgent 插件/等...)?
问题:在 Jenkins 管道中,我需要远程 ssh 到目标机器。 我的旧方法是使用“使用 ssh 在远程主机上执行 shell 脚本”。我想指定用户名和密码。
我读到,绝妙的方法应该是这样的
sshagent(['RemoteCredentials']) {
sh 'ssh -o StrictHostKeyChecking=no -l remoteusername remotetarget uname -a'
}
RemoteCredentials:它是带密码的私钥
有没有办法使用用户名/密码远程凭据进行 ssh? sshagent 不支持用户名/密码身份验证
里卡多
最佳答案
不幸的是,你是对的。
看起来 ssh-agent-plugin 仅支持通过 Jenkins 中的凭据管理区域添加的存储用户、密码、公钥凭据。 See this unit test验证 ssh-agent 是否基于公钥正常工作。该插件中不太可能有未经测试的功能来支持用户+密码身份验证。
如果可以,请切换到基于公钥的身份验证。如果由于某种原因您无法切换...您可以安装sshpass在你的 Jenkins 盒子上,但这通常被认为是不好的做法。
node {
stage 'Does sshpass work?'
sh 'sshpass -p \'password\' ssh user@host "ls; hostname; whois google.com;"'
}
关于Jenkins 管道 - ssh 到不同的机器以及存储凭据的位置(使用 ssh/SSHAgent 插件/等...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37805901/