skip to Main Content

I am trying to build an image and run container as an ssh server.
I want to be able to ssh that container (remote_host) from another container (jenkins/jenkins)

I am using a VM with Centos.

I am using this docker file. I run it from my VM host machine(Centos too)

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"]

My docker compose file

---
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"

I run docker-compose build from my host machine

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

Then I run docker-compose up -d

docker ps give me :

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 

I ssh my first container:

docker exec -it jenkins bash

Then When I try to ssh the second container from the first one

ssh remote_user@remote_host

I got this error

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.

5

Answers


  1. Solution:

    Please edit your dockerfile like this:

    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
    
    
    Login or Signup to reply.
  2. If the remote_host is not in the process of booting then log into the remote_host, become root and remove /run/nologin file.

    Login or Signup to reply.
  3. Solution 1:

    Add this command to your code

    RUN rm -rf /run/nologin
    

    The above command clears intermediate users(temp users).

    Solution 2:

    If it doesn’t works just REBOOT your VirtualMachine.

    I hope my solutions worksfine.

    Login or Signup to reply.
  4. Found a solution using

    ssh-keygen -f "/var/jenkins_home/.ssh/known_hosts" -R "remote_host"
    
    Login or Signup to reply.
  5. To answer your question use the below command

    ssh-keygen -f "/var/jenkins_home/.ssh/known_hosts" -R "remote_host"
    

    However I am getting permission denied even after the same

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search