Jenkins 管道 - ssh 到不同的机器以及存储凭据的位置(使用 ssh/SSHAgent 插件/等...)

标签 jenkins ssh jenkins-pipeline credentials ssh-agent

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/

相关文章:

java - Jenkins Jelly 更新文本框

google-chrome - Jenkins 中的 TestCafe 无法建立浏览器连接

ssh - PSCP 将文件从 godaddy 复制到我的 Windows 机器

jenkins - 如何列出 Jenkins 管道脚本中目录中的所有目录

Jenkins Pipeline - 并行多次构建相同的作业

linux - 通过Jenkins执行Groovy命令: "find: missing argument to ` -exec'"

jenkins - 无法在 Jenkins 管道中将作业状态设置回成功

mysql - mySQL 脚本中的语法错误?

linux - 普通用户的 SSH key 。无法建立 key 链。树莓派 2 模型 B

python - 使用 Python 脚本进行 SSH 和 Screen