2016-08-03 77 views
1

我使用的jenkinsci/ssh-slave 首先泊坞窗像我产生我的机器上的一个键:不能ssh来泊坞窗jenkinsci/SSH-从集装箱

ssh-keygen 

我贴我的公钥的内容在我的搬运工运行命令所以它看起来像:

$ docker run jenkinsci/ssh-slave "ssh-rsa AAAAB3NzaC1yc2EAAAADA.." 

当容器运行时我尝试连接(以根用户身份和用户詹金斯)。首先,我需要得到容器IP:

$ docker inspect 65ebc0f67879 | grep IP 

172.17.0.x 

我尝试SSH:

$ ssh -i id_rsa [email protected] 

Permission denied (publickey). 我在做什么错? 当我exec容器我看到authorized_keys我的公钥:

cat /home/jenkins/.ssh/authorized_keys 

内容:

ssh-rsa AAAAB3NzaC1yc2EAAAADA.. 

回答

1

如果您尝试为用户詹金斯那么你会得到错误:权限被拒绝(公钥)。

/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奴隶。