从一个 docker 容器无密码登录到另一个
Posted
技术标签:
【中文标题】从一个 docker 容器无密码登录到另一个【英文标题】:login without password from one docker container into another 【发布时间】:2020-11-30 08:31:31 【问题描述】:我创建了 2 个 docker 容器。一个 Jenkins 和一个运行带有 ubuntu 基础的 openssh 服务器的容器。 我配置了 Jenkins 容器购买拉取 Jenkins 映像,对于 openssh 服务器,我使用 Dockerfile 创建了映像。 我生成了密钥文件并将公钥复制到 openssh 服务器的 authorized_keys 中。 然后当我尝试通过 Jenkins 容器登录到 openssh 服务器时使用 ssh -i remote-key remote_user@remote-host 提示我输入密码。
这是我的 DockerFile 和 docker-compose Docker 文件:
From ubuntu
Run apt-get update
Run apt-get install -y openssh-server
Run useradd -m -d /home/remote_user remote_user && \
echo "remote_user:1234" |chpasswd && \
mkdir -p /home/remote_user/.ssh && \
chmod 700 /home/remote_user/.ssh
Copy remote-key.pub /home/remote_user/.ssh/authorised_keys
Run chown remote_user:remote_user -R /home/remote_user/.ssh && \
chmod 600 /home/remote_user/.ssh/authorised_keys
RUN service ssh start
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]`
码头工人撰写
version: '3'
services:
jenkins:
container_name: jenkins
image: jenkins/jenkins
ports:
- "8080:8080"
volumes:
- "/home/sarthak/jenkins/jenkins1/jenkins1_home:/var/jenkins_home"
networks:
- net
remote_host:
container_name: remote-host
image: remote-host
build:
context: /home/sarthak/jenkins/jenkins1/
networks:
- net
networks:
net:
通过密码登录成功,但我需要无密码登录。请帮忙
【问题讨论】:
尝试将authorised_keys
更改为authorized_keys
。
@MarkoE:感谢您指出。愚蠢的错误导致巨大的差异。成功了
我也将其作为答案发布,因此您可以将其标记为正确。
顺便说一句:也许你想看看Docker Buildkit feature for managing credentials?帮我解决了工作中的 SSH 问题。
【参考方案1】:
创建Dockerfile
的时候应该把authorised_keys
改成authorized_keys
,两行有同样的问题:
COPY remote-key.pub /home/remote_user/.ssh/authorized_keys
和
RUN chown remote_user:remote_user -R /home/remote_user/.ssh && \
chmod 600 /home/remote_user/.ssh/authorized_keys
【讨论】:
以上是关于从一个 docker 容器无密码登录到另一个的主要内容,如果未能解决你的问题,请参考以下文章