【问题标题】:SSH into a remote server in a Jenkins pipeline using withCredentials使用 withCredentials SSH 到 Jenkins 管道中的远程服务器
【发布时间】:2023-03-12 11:55:01
【问题描述】:

我想通过 SSH 连接到服务器以在我的 Jenkins 管道中执行一些任务。

这是我经历的步骤。

  1. 在我的远程服务器中,我使用ssh-keygen 创建了id_rsaid_rsa.pub
  2. 我复制了id_rsa 中的字符串并粘贴到我的Jenkins 服务器的Global Credentials 菜单中的Private Key 字段。

  1. 在我的 Jenkinsfile 中,我这样做了

    stage('SSH into the server') { steps { withCredentials([sshUserPrivateKey( credentialsId: '<ID>', keyFileVariable: 'KEY_FILE')]) { sh ''' more ${KEY_FILE} cat ${KEY_FILE} > ./key_key.key eval $(ssh-agent -s) chmod 600 ./key_key.key ssh-add ./key_key.key cd ~/.ssh echo "ssh-rsa ... (the string from the server's id_rsa.pub)" >> authorized_keys ssh root@<server_name> docker ps ''' } } }

它几乎使用远程服务器的私钥创建了一个ssg-agent,并将一个公钥添加到授权密钥中。

结果给了我Host key verification failed

我只是想通过 ssh 进入远程服务器,但我一直面临这个问题。有什么帮助吗?

日志

++ ssh-agent -s
+ eval 'SSH_AUTH_SOCK=/tmp/ssh-xfcQYEfiyfRs/agent.26353;' export 'SSH_AUTH_SOCK;' 'SSH_AGENT_PID=26354;' export 'SSH_AGENT_PID;' echo Agent pid '26354;'
++ SSH_AUTH_SOCK=/tmp/ssh-xfcQYEfiyfRs/agent.26353
++ export SSH_AUTH_SOCK
++ SSH_AGENT_PID=26354
++ export SSH_AGENT_PID
++ echo Agent pid 26354
Agent pid 26354
+ chmod 600 ./key_key.key
+ ssh-add ./key_key.key
Identity added: ./key_key.key (./key_key.key)
+ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ./key_key.key root@<server> docker ps
Warning: Permanently added '<server>, <IP>' (ECDSA) to the list of known hosts.

                                 WARNING!!!
                    READ THIS BEFORE ATTEMPTING TO LOGON

      This System is for the use of authorized users only.  ....



Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

【问题讨论】:

    标签: jenkins ssh


    【解决方案1】:

    由于启用了StrictHostKeyChecking 而失败。如下更改您的 ssh 命令,它应该可以正常工作。

    ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" root@<server_name> docker ps
    

    StrictHostKeyChecking=no 将禁用主机密钥验证提示。

    UserKnownHostsFile=/dev/null 将通过将密钥发送到/dev/null 来跳过主机密钥检查

    【讨论】:

    • 它给了我不同的输出,但它仍然给我一些错误:Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
    • Permission denied 表示您传递的任何凭据都不起作用,并且您无法通过 ssh 连接到远程服务器。
    • 您可以使用 -i key_file 在 ssh 命令本身中传递私钥文件。总体命令将变为ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" -i ./key_key.key root@&lt;server_name&gt; docker ps 这里我假设./key_key.key 是您的私钥存储的文件。
    • 仍然得到相同的输出。我正在复制粘贴密钥字符串。这可能是错误吗?
    • 能否请您更新您的问题,详细说明您现在遇到的新错误。
    猜你喜欢
    • 2018-12-10
    • 1970-01-01
    • 2018-01-23
    • 2012-10-02
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2023-01-30
    相关资源
    最近更新 更多