【问题标题】:In Jenkins Pipeline why two credentials needed at a time?在 Jenkins Pipeline 中,为什么一次需要两个凭据?
【发布时间】:2018-05-22 01:36:51
【问题描述】:

我想通过 SSH 从 Jenkins 代理连接到远程服务器并执行命令。就像here说的那样:

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

但在示例中,我看到他们提到了来自 Jenkins 的凭据,并且在命令中再次使用登录名:“-l cloudbees”。

所以我的问题如下: 那么“凭证:['deploy-dev']”用于什么?

【问题讨论】:

    标签: jenkins ssh jenkins-pipeline ssh-agent


    【解决方案1】:

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

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

    这就是 Jenkins Pipeline 的作用:

    1. 它在 Jenkins 从节点上启动 ssh-agent。这是守护进程 监听 Unix 套接字(这个套接字存储在 $SSH_AUTH_SOCK 多变的)。
    2. 然后它添加(ssh-add)这些凭据('deploy-dev') 到正在运行的 ssh-agent。下次,当你运行命令时(在我们的 如果这是“ssh -l cloudbees 192.168.1.106”,它会获取私有 来自 ssh-agent 的 SSH 密钥

    所以最终它将作为用户 cloudbees 连接,但密钥将从 ssh-agent 获取。如果您使用普通凭据 - 也许 -l cloudbees 根本不需要。不确定。

    一些useful link 为您服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-08
      • 2010-09-07
      • 2020-02-17
      • 1970-01-01
      • 2022-07-12
      • 2022-09-28
      • 1970-01-01
      • 2016-11-22
      相关资源
      最近更新 更多