【问题标题】:Pipeline when copying to a remote host gives an error - `unknown user`复制到远程主机时管道出现错误 - `unknown user`
【发布时间】:2023-01-12 17:50:34
【问题描述】:

管道返回错误'未知用户111',因为容器中没有jenkins用户!

可能是什么问题呢? 也许我没有正确使用 ssh-agent。

如果您查看 docker 代理,则没有 jenkins 用户。 但是 ssh 代理用户名是 jenkins。

詹金斯文件:

pipeline {
    agent {
        docker { 
            image 'node:10'
        }        
    }  
     environment {
        npm_config_cache='npm-cache'
    } 
    stages {
        stage('Build') {
            steps {
                echo "${BUILD_NUMBER}"
                echo "${USER}"
                sh "cat /etc/passwd"                     
            }
        }
        stage("ssh-agent") {
            steps {
                sshagent(['08a25aca-1fba-4e9a-a444-4211275436a4']) {
                    sh '''
                        scp ./test jenkins@192.168.120.13:/home/jenkins/
                    '''
                }
            }
        }
    }
}

控制台输出:


[Pipeline] echo
jenkins
[Pipeline] sh
+ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
node:x:1000:1000::/home/node:/bin/bash...
[Pipeline] sshagent
[ssh-agent] Using credentials jenkins (rnd-remote)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Exec ssh-agent (binary ssh-agent on a remote machine)
$ docker exec 81017287a7ae1e030c17a159dd71ab05e8623192dd55dc6ab111158d20e826b0 ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-w5tvOBaFFM5F/agent.29
SSH_AGENT_PID=36
Running ssh-add (command line suppressed)
Identity added: /var/lib/jenkins/workspace/vpp-config-object@tmp/private_key_7895885466712491331.key (jenkins@apkrnrnd)
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
+ scp ./test jenkins@192.168.120.13:/home/jenkins/
unknown user 111
[Pipeline] }
$ docker exec --env ******** --env ******** 81017287a7ae1e030c17a159dd71ab05e8623192dd55dc6ab111158d20e826b0 ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 36 killed;
[ssh-agent] Stopped.
$ docker stop --time=1 81017287a7ae1e030c17a159dd71ab05e8623192dd55dc6ab111158d20e826b0
$ docker rm -f 81017287a7ae1e030c17a159dd71ab05e8623192dd55dc6ab111158d20e826b0
[Pipeline] End of Pipeline
ERROR: script returned exit code 255
Finished: FAILURE```

【问题讨论】:

    标签: linux docker jenkins ssh jenkins-pipeline


    【解决方案1】:

    问题是您没有正确使用 ssh-agent。 ssh-agent 正在尝试使用“jenkins”用户连接到远程服务器,但该用户不存在于您用作 Jenkins 代理的容器中。

    一种解决方案是将“jenkins”用户添加到容器映像。或者,您可以指定一个不同的用户供 ssh-agent 在连接到远程服务器时使用。

    【讨论】:

      猜你喜欢
      • 2015-12-24
      • 2012-06-02
      • 1970-01-01
      • 2013-08-06
      • 2014-08-01
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      相关资源
      最近更新 更多