尝试 ssh docker 容器时出错:系统正在启动
Error while trying to ssh a docker container : System is booting up
我正在尝试构建图像和 运行 容器作为 ssh 服务器。
我希望能够从另一个容器 (jenkins/jenkins)
ssh 那个容器 (remote_host)
我正在使用带有 Centos 的虚拟机。
我正在使用这个 docker 文件。我 运行 它来自我的 VM 主机(Centos 也是)
FROM centos
RUN yum -y install openssh-server openssh-clients
RUN useradd -ms /bin/bash remote_user && \
echo 'remote_user:12345' | chpasswd && \
mkdir /home/remote_user/.ssh && \
chmod 700 /home/remote_user/.ssh
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
EXPOSE 22
RUN /usr/bin/ssh-keygen -A
CMD ["/usr/sbin/sshd", "-D"]
我的docker撰写文件
---
networks:
net: ~
services:
jenkins:
container_name: jenkins
image: jenkins/jenkins
networks:
- net
ports:
- "8080:8080"
volumes:
- "$PWD/jenkins_home:/var/jenkins_home"
remote_host:
container_name: remote-host
image: remote-host
build:
context: centos7
networks:
- net
version: "3"
我从我的主机 运行 docker-compose build
Building remote_host
Step 1/8 : FROM centos
---> 0f3e07c0138f
Step 2/8 : RUN yum -y install openssh-server openssh-clients
---> Using cache
---> 277411f7cc41
Step 3/8 : RUN useradd -ms /bin/bash remote_user && echo 'remote_user:12345' | chpasswd && mkdir /home/remote_user/.ssh && chmod 700 /home/remote_user/.ssh
---> Using cache
---> c42b15de9da7
Step 4/8 : COPY remote-key.pub /home/remote_user/.ssh/authorized_keys
---> Using cache
---> f205521e83cb
Step 5/8 : RUN chown remote_user:remote_user -R /home/remote_user/.ssh && chmod 600 /home/remote_user/.ssh/authorized_keys
---> Using cache
---> a7bb438b87ed
Step 6/8 : EXPOSE 22
---> Using cache
---> 7f28ef8e4ec9
Step 7/8 : RUN /usr/bin/ssh-keygen -A
---> Using cache
---> a4fae9730627
Step 8/8 : CMD ["/usr/sbin/sshd", "-D"]
---> Using cache
---> 3fe69c9789a6
Successfully built 3fe69c9789a6
Successfully tagged remote-host:latest
那我运行docker-compose up -d
docker ps给我:
0f9987444fcf remote-host "/usr/sbin/sshd -D" 28 minutes ago Up 16 minutes 22/tcp remote-host
4c9ba830f419 jenkins/jenkins "/sbin/tini -- /usr/…" 7 hours ago Up 7 hours 0.0.0.0:8080->8080/tcp, 50000/tcp jenkins
我 SSH 我的第一个容器:
docker exec -it jenkins bash
然后当我尝试从第一个容器 ssh 到第二个容器时
ssh remote_user@remote_host
我遇到了这个错误
Are you sure you want to continue connecting (yes/no)?
remote_user@remote_host's password:12345
"System is booting up. Unprivileged users are not permitted to log in yet. Please come back later. For technical details, see pam_nologin(8)."
Authentication failed.
解决方案:
请像这样编辑您的 dockerfile:
FROM centos
RUN yum -y install openssh-server
RUN useradd remote_user && \
echo remote_user:1234 | chpasswd && \
mkdir /home/remote_user/.ssh && \
chmod 700 /home/remote_user/.ssh
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
RUN /usr/bin/ssh-keygen -A
EXPOSE 22
RUN rm -rf /run/nologin
CMD /usr/sbin/sshd -D
如果 remote_host 不在引导过程中,则登录 remote_host,成为 root 用户并删除 /run/nologin 文件。
解决方案 1:
将此命令添加到您的代码中
RUN rm -rf /run/nologin
以上命令清除中间用户(临时用户)。
解决方案 2:
如果它不起作用,请重新启动您的虚拟机。
我希望我的解决方案能正常工作。
使用
找到解决方案
ssh-keygen -f "/var/jenkins_home/.ssh/known_hosts" -R "remote_host"
要回答您的问题,请使用以下命令
ssh-keygen -f "/var/jenkins_home/.ssh/known_hosts" -R "remote_host"
然而,即使在相同的
我正在尝试构建图像和 运行 容器作为 ssh 服务器。 我希望能够从另一个容器 (jenkins/jenkins)
ssh 那个容器 (remote_host)我正在使用带有 Centos 的虚拟机。
我正在使用这个 docker 文件。我 运行 它来自我的 VM 主机(Centos 也是)
FROM centos
RUN yum -y install openssh-server openssh-clients
RUN useradd -ms /bin/bash remote_user && \
echo 'remote_user:12345' | chpasswd && \
mkdir /home/remote_user/.ssh && \
chmod 700 /home/remote_user/.ssh
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
EXPOSE 22
RUN /usr/bin/ssh-keygen -A
CMD ["/usr/sbin/sshd", "-D"]
我的docker撰写文件
---
networks:
net: ~
services:
jenkins:
container_name: jenkins
image: jenkins/jenkins
networks:
- net
ports:
- "8080:8080"
volumes:
- "$PWD/jenkins_home:/var/jenkins_home"
remote_host:
container_name: remote-host
image: remote-host
build:
context: centos7
networks:
- net
version: "3"
我从我的主机 运行 docker-compose build
Building remote_host
Step 1/8 : FROM centos
---> 0f3e07c0138f
Step 2/8 : RUN yum -y install openssh-server openssh-clients
---> Using cache
---> 277411f7cc41
Step 3/8 : RUN useradd -ms /bin/bash remote_user && echo 'remote_user:12345' | chpasswd && mkdir /home/remote_user/.ssh && chmod 700 /home/remote_user/.ssh
---> Using cache
---> c42b15de9da7
Step 4/8 : COPY remote-key.pub /home/remote_user/.ssh/authorized_keys
---> Using cache
---> f205521e83cb
Step 5/8 : RUN chown remote_user:remote_user -R /home/remote_user/.ssh && chmod 600 /home/remote_user/.ssh/authorized_keys
---> Using cache
---> a7bb438b87ed
Step 6/8 : EXPOSE 22
---> Using cache
---> 7f28ef8e4ec9
Step 7/8 : RUN /usr/bin/ssh-keygen -A
---> Using cache
---> a4fae9730627
Step 8/8 : CMD ["/usr/sbin/sshd", "-D"]
---> Using cache
---> 3fe69c9789a6
Successfully built 3fe69c9789a6
Successfully tagged remote-host:latest
那我运行docker-compose up -d
docker ps给我:
0f9987444fcf remote-host "/usr/sbin/sshd -D" 28 minutes ago Up 16 minutes 22/tcp remote-host
4c9ba830f419 jenkins/jenkins "/sbin/tini -- /usr/…" 7 hours ago Up 7 hours 0.0.0.0:8080->8080/tcp, 50000/tcp jenkins
我 SSH 我的第一个容器:
docker exec -it jenkins bash
然后当我尝试从第一个容器 ssh 到第二个容器时
ssh remote_user@remote_host
我遇到了这个错误
Are you sure you want to continue connecting (yes/no)?
remote_user@remote_host's password:12345
"System is booting up. Unprivileged users are not permitted to log in yet. Please come back later. For technical details, see pam_nologin(8)."
Authentication failed.
解决方案:
请像这样编辑您的 dockerfile:
FROM centos
RUN yum -y install openssh-server
RUN useradd remote_user && \
echo remote_user:1234 | chpasswd && \
mkdir /home/remote_user/.ssh && \
chmod 700 /home/remote_user/.ssh
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
RUN /usr/bin/ssh-keygen -A
EXPOSE 22
RUN rm -rf /run/nologin
CMD /usr/sbin/sshd -D
如果 remote_host 不在引导过程中,则登录 remote_host,成为 root 用户并删除 /run/nologin 文件。
解决方案 1:
将此命令添加到您的代码中
RUN rm -rf /run/nologin
以上命令清除中间用户(临时用户)。
解决方案 2:
如果它不起作用,请重新启动您的虚拟机。
我希望我的解决方案能正常工作。
使用
找到解决方案ssh-keygen -f "/var/jenkins_home/.ssh/known_hosts" -R "remote_host"
要回答您的问题,请使用以下命令
ssh-keygen -f "/var/jenkins_home/.ssh/known_hosts" -R "remote_host"
然而,即使在相同的