Impossible D'accéder à Centos sshd sur Docker

j'ai lu un article qui <!-Ssh Daemon Service. Mais je veux courir sur Centos6.4. Donc j'ai mis en place à partir de l'image officielle de centos avec presque la même instruction. Puis je me connecte au serveur centos sshd, mais la connexion est fermée immédiatement. Ici est le message.

ssh root@localhost -p 49164
The authenticity of host '[localhost]:49164 ([127.0.0.1]:49164)' can't be established.
RSA key fingerprint is 88:71:89:e5:30:91:78:5c:bf:cb:88:c2:5b:81:1a:b5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:49164' (RSA) to the list of known hosts.
root@localhost's password: 
Connection to localhost closed.

Pourquoi Je ne peux pas connecter le serveur centos sshd?

14
demandé sur cpw 2013-08-11 20:03:39

4 réponses

avait le même problème ici, fonctionne très bien si vous désactivez PAM dans la configuration sshd.

Voici les lignes pertinentes de notre fichier Dockerfile

RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config
19
répondu Vektah 2013-08-22 07:39:12

j'ai sshd de travail avec la "centos" image de Docker repo:

  • j'ai fait besoin de modifier sshd_config par défaut UsePAM yes est
  • je n'ai besoin de courir /etc/init.d/sshd start dans mon fichier Dockerfile car cela génère des clés à la première exécution.
  • je n'ai besoin de réparer les autorisations sur .ssh

Mon Dockerfile est:

FROM centos:latest

RUN yum update -y
RUN yum install -y openssh-server sudo

RUN  /etc/init.d/sshd start

RUN useradd admin -G wheel
RUN echo 'admin:secret' | chpasswd
RUN echo '%wheel ALL=(ALL) ALL' >> /etc/sudoers

RUN mkdir -p /home/admin/.ssh
ADD authorized_keys /home/admin/.ssh/
RUN chown -R admin:admin /home/admin/.ssh; chmod 700 /home/admin/.ssh

EXPOSE 22
CMD    ["/usr/sbin/sshd", "-D"]
4
répondu IanB 2014-06-24 01:51:05

j'ai aussi dû générer des clés de serveur, avant que "ssh-v" ne sorte immédiatement avec

...
debug1: SSH2_MSG_KEXINIT
Connection closed by ...

Voici mon travail (Vagrant 1.3.5 et le panneau de 0,7) Dockerfile de configuration de sshd:

# sshd
RUN echo 'root:secret' | chpasswd
RUN yum install -y openssh-server
RUN mkdir -p /var/run/sshd ; chmod -rx /var/run/sshd
# http://stackoverflow.com/questions/2419412/ssh-connection-stop-at-debug1-ssh2-msg-kexinit-sent
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# Bad security, add a user and sudo instead!
RUN sed -ri 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
# http://stackoverflow.com/questions/18173889/cannot-access-centos-sshd-on-docker
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config

####################
ADD supervisord.conf /etc/supervisord.conf
EXPOSE 10389 22
CMD ["/usr/bin/supervisord"]

mon superviseur.conf:

[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.log
autorestart=true
2
répondu jamshid 2014-01-06 20:42:45

dans le Panneau site, l'exemple Dockerizing un Démon SSH Service affiche un fichier Dockerfile qui traite de cette question. La ligne importante est la commande sed après le commentaire SSH login fix:

# sshd
#
# VERSION               0.0.2

FROM ubuntu:14.04
MAINTAINER Sven Dowideit <SvenDowideit@docker.com>

RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

il est basé sur une image Ubuntu, mais il fonctionne pour CentOS 6 aussi.

2
répondu Ed I 2016-06-19 01:08:45