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