Jenkins 在詹金斯管道中,为什么一次需要两个凭证?

Jenkins 在詹金斯管道中,为什么一次需要两个凭证?,jenkins,ssh,jenkins-pipeline,ssh-agent,Jenkins,Ssh,Jenkins Pipeline,Ssh Agent,我想通过SSH从Jenkins代理连接到远程服务器并执行命令。正如我所说: 但在这个示例中,我看到他们提到了来自Jenkins的凭证,并且在命令中再次使用了login:“-lcloudbees” 因此,我的问题如下: “凭证:['deploy-dev']”用于什么 好吧,回答我自己的问题:-) SSH客户端需要凭据才能连接到远程SSH守护程序。通常,它们是用户/密码或私有SSH密钥。 如果在运行时两个都没有呢 Jenkins管道就是这样做的: 它在Jenkins从属节点上启动ssh代理。这是守护

我想通过SSH从Jenkins代理连接到远程服务器并执行命令。正如我所说:

但在这个示例中,我看到他们提到了来自Jenkins的凭证,并且在命令中再次使用了login:“-lcloudbees”

因此,我的问题如下:
“凭证:['deploy-dev']”用于什么

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

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

Jenkins管道就是这样做的:

  • 它在Jenkins从属节点上启动ssh代理。这是守护进程 侦听Unix套接字(此套接字存储在$SSH\u AUTH\u SOCK中 变量)
  • 然后它添加(ssh-add)这些凭证('deploy-dev') 到正在运行的ssh代理。下次,当您运行命令(在我们的 本例为“ssh-lcloudbees 192.168.1.106”,它获取私有 来自SSH代理的SSH密钥
  • 所以最终它将以用户cloudbees的身份连接,但密钥将从ssh代理获取。如果您使用普通凭据,可能根本不需要-l cloudbees。不确定

    有人愿意为你效劳

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