使用withCredentials将SSH连接到Jenkins管道中的远程服务器

使用withCredentials将SSH连接到Jenkins管道中的远程服务器,jenkins,ssh,Jenkins,Ssh,我想使用SSH连接到服务器,以执行Jenkins管道中的一些任务 以下是我所经历的步骤 在我的远程服务器中,我使用ssh-keygen创建id\u-rsa和id\u-rsa.pub 我复制了id\u rsa中的字符串,并粘贴到我的Jenkins服务器中全局凭据菜单中的私钥字段 在我的詹金斯档案中,我知道 stage('SSH进入服务器'){ 台阶{ 具有凭证([sshUserPrivateKey( 凭证ID:“”, keyFileVariable:'KEY_FILE')]){ “嘘” 更多${

我想使用SSH连接到服务器,以执行Jenkins管道中的一些任务

以下是我所经历的步骤

  • 在我的远程服务器中,我使用
    ssh-keygen
    创建
    id\u-rsa
    id\u-rsa.pub
  • 我复制了
    id\u rsa
    中的字符串,并粘贴到我的Jenkins服务器中
    全局凭据
    菜单中的
    私钥
    字段
  • 在我的詹金斯档案中,我知道

    stage('SSH进入服务器'){
    台阶{
    具有凭证([sshUserPrivateKey(
    凭证ID:“”,
    keyFileVariable:'KEY_FILE')]){
    “嘘”
    更多${KEY_FILE}
    cat${KEY\u FILE}>/KEY\u KEY.KEY
    eval$(ssh代理-s)
    chmod 600./key\u key.key
    ssh add./key\u key.key
    cd~/.ssh
    echo“ssh rsa…(来自服务器id_rsa.pub的字符串)”>>授权的\u密钥
    ssh root@docker-ps
    '''
    }
    }
    }

  • 它几乎使用远程服务器的私钥创建了一个
    ssg代理
    ,并向授权密钥添加了一个公钥

    结果是,
    主机密钥验证失败

    我只是想用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).
    
    ++ssh代理-s
    +eval'SSH_AUTH_SOCK=/tmp/SSH xfcQYEfiyfRs/agent.26353;'导出“SSH\u AUTH\u SOCK;”SSH_AGENT_PID=26354;'导出“SSH\u代理\u PID;”回显代理pid'26354;'
    ++SSH_AUTH_SOCK=/tmp/SSH xfcQYEfiyfRs/agent.26353
    ++导出SSH\u AUTH\u SOCK
    ++SSH\u代理\u PID=26354
    ++导出SSH\u代理\u PID
    ++回波代理pid 26354
    代理pid 26354
    +chmod 600./key\u key.key
    +ssh add./key\u key.key
    添加的标识:./key\u key.key(./key\u key.key)
    +ssh-o UserKnownHostsFile=/dev/null-o StrictHostKeyChecking=no-i./key\u key.key root@docker ps
    警告:已将“,”(ECDSA)永久添加到已知主机的列表中。
    警告
    在尝试登录之前请阅读此内容
    本系统仅供授权用户使用。。。。
    权限被拒绝,请重试。
    权限被拒绝,请重试。
    权限被拒绝(公钥、gssapi密钥、带麦克风的gssapi、密码)。
    
    由于启用了
    StricHostKeyChecking
    ,因此失败。按如下所示更改ssh命令,它应该可以正常工作

    ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" root@<server_name> docker ps
    
    ssh-o“UserKnownHostsFile=/dev/null”-o“StrictHostKeyChecking=no”root@docker-ps
    
    strichostkeychecking=no
    将禁用主机密钥验证提示


    UserKnownHostsFile=/dev/null
    将通过将密钥发送到
    /dev/null

    跳过主机密钥检查。它会给我不同的输出,但仍会给我一些错误:
    权限被拒绝,请重试。权限被拒绝,请重试。权限被拒绝(publickey、gssapi-keyex、gssapi-with-mic、password)。
    权限被拒绝
    意味着您传递的任何凭据都不起作用,并且您无法通过ssh连接到远程服务器。您可以使用
    -i-key\u file
    在ssh命令本身中传递私钥文件。整个命令将变成
    ssh-o“UserKnownHostsFile=/dev/null”-o“StrictHostKeyChecking=no”-i./key\u key.key root@docker ps
    这里我假设
    /key\u key.key
    是存储私钥的文件。仍然得到相同的输出。我正在复制粘贴关键字符串。这可能是错误吗?请更新您的问题,并提供有关您现在遇到的新错误的更多详细信息。