不能ssh到jenkinsci / ssh-slave的docker容器

时间:2016-08-03 17:56:48

标签: jenkins ssh docker

我正在使用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..

2 个答案:

答案 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。