在Jenkins Pipeline中,为什么一次需要两个凭证?

时间:2018-05-16 14:09:19

标签: jenkins ssh jenkins-pipeline ssh-agent

我想通过SSH从Jenkins代理连接到远程服务器并执行命令。完全像所说here

sshagent (credentials: ['deploy-dev']) {
    sh 'ssh -o StrictHostKeyChecking=no -l cloudbees 192.168.1.106 uname -a'
  }

但是在示例中我看到他们提到了Jenkins的凭据,并且在命令中再次使用login:" -l cloudbees"。

所以我的问题如下: 什么"凭据:[' deploy-dev']"是用于那么?

1 个答案:

答案 0 :(得分:0)

好吧,回答我自己的问题: - )

SSH客户端需要凭据才能连接到远程SSH守护程序。通常,它们是用户/密码或私有SSH密钥。 如果你在运行时没有它们怎么办?

这就是Jenkins Pipeline的作用:

  1. 它在Jenkins从属节点上启动ssh-agent。这是守护进程 侦听Unix-socket(此套接字存储在$ SSH_AUTH_SOCK中 变量)。
  2. 然后它添加(ssh-add)这些凭据(' deploy-dev') 运行ssh-agent。下次,当你运行命令(在我们的 这是" ssh -l cloudbees 192.168.1.106"它取私人 来自ssh-agent的SSH密钥
  3. 因此最终它将作为用户cloudbees连接,但密钥将从ssh-agent获取。如果您使用普通凭证 - 可能根本不需要-l cloudbees。不确定。

    一些useful link为您服务。