我正在使用jenkinsci/ssh-slave的泊坞窗图片 首先,我在我的机器上生成了一个键:
ssh-keygen
我将我的公钥内容粘贴到我的docker run命令中,如下所示:
$ docker run jenkinsci/ssh-slave "ssh-rsa AAAAB3NzaC1yc2EAAAADA.."
当容器运行时,我尝试连接(以root用户身份和jenkins用户身份)。首先,我需要获取容器IP:
$ docker inspect 65ebc0f67879 | grep IP
172.17.0.x
我尝试ssh:
$ ssh -i id_rsa root@172.17.0.x
但是Permission denied (publickey).
我究竟做错了什么?
当我exec
容器时,我在authorized_keys
:
cat /home/jenkins/.ssh/authorized_keys
内容:
ssh-rsa AAAAB3NzaC1yc2EAAAADA..
答案 0 :(得分:2)
尝试以用户身份登录" jenkins":
ssh -i id_rsa jenkins@172.17.0.x
相关的代码行在这里:
答案 1 :(得分:1)
如果您尝试用户jenkins,那么您将收到错误:Permission denied(publickey)。
/home/jenkins/.ssh拥有正确的权限但错误的所有权。
drwxr-xr-x 3 jenkins jenkins 4096 Nov 21 10:00 .
drwxr-xr-x 1 root root 4096 Mar 31 2017 ..
-rw-r--r-- 1 jenkins jenkins 220 Nov 5 2016 .bash_logout
-rw-r--r-- 1 jenkins jenkins 3515 Nov 5 2016 .bashrc
-rw-r--r-- 1 jenkins jenkins 675 Nov 5 2016 .profile
drwxr-xr-x 2 root root 4096 Nov 21 09:55 .ssh
我试图通过使用命令
更新我的Dockerfile来改变它RUN chown -Rf jenkins:jenkins "${JENKINS_AGENT_HOME}/.ssh"
和所有者:组未更改(可能是entrypoint.sh会覆盖它)
Step 7/12 : COPY ./ssh/authorized_keys /home/jenkins/.ssh/authorized_keys
---> Using cache
---> fb76b6c80648
Step 8/12 : RUN chmod 600 /home/jenkins/.ssh/authorized_keys
---> Running in c76f24a8e2d8
---> 2e2398ccd53c
Step 9/12 : RUN chmod 700 /home/jenkins/.ssh
---> Running in 22e4983555bb
---> 9ac1d7055294
Step 10/12 : RUN chown -Rf jenkins:jenkins "${JENKINS_AGENT_HOME}/.ssh"
---> Running in 1636f6f08bdf
---> 58f5679f90f5
Step 11/12 : RUN ls -al /home/jenkins/
---> Running in 51fe02e603df
total 24
drwxr-xr-x 3 jenkins jenkins 4096 Nov 21 10:00 .
drwxr-xr-x 1 root root 4096 Mar 31 2017 ..
-rw-r--r-- 1 jenkins jenkins 220 Nov 5 2016 .bash_logout
-rw-r--r-- 1 jenkins jenkins 3515 Nov 5 2016 .bashrc
-rw-r--r-- 1 jenkins jenkins 675 Nov 5 2016 .profile
drwxr-xr-x 2 root root 4096 Nov 21 09:55 .ssh
---> 997f3401475c
Step 12/12 : COPY ./resolv.conf /etc/resolv.conf
---> f5111f5dec09
我没有运气,所以我使用了图像环境变量
docker run -e "JENKINS_SLAVE_SSH_PUBKEY=<public key>" my-slave
而且,嘿!工作了!
解决方案:使用让您感觉舒适的基本图像构建自己的jenkins slave。