2013-08-11 11 views
14

私は記事を読んでSSH Daemon Serviceを読む。 しかし、私はCentos6.4を使いたいと思います。だから私は公式のcentosのイメージからほとんど同じistructionでセットアップしました。 次に、centos sshd serverに接続しますが、接続はすぐに閉じられます。 ここにメッセージがあります。DockerのCentos sshdにアクセスできない

ssh [email protected] -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. 
[email protected]'s password: 
Connection to localhost closed. 

なぜ私はcentos sshd serverに接続できませんか?

答えて

19

ここで同じ問題があったのは、sshd configでPAMを無効にするとうまくいきます。ここで

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

でその「のssh -v」とまったくすぐに出口はここに(私の働いている前に、私はまた、サーバー鍵を生成しなければならなかった私たちの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 
+1

私のために働く!ありがとうございました! – holys

+0

PAMをオフにするのは本当に良いアイデアですか?私はsshに慣れていませんが、PAMは「Pluggable Authentication Module」の略です。 –

+1

私はPAMと同様の問題があり、これはhttp://gaijin-nippon.blogspot.se/2013/07/audit-on-lxc-host.htmlであることが判明しました。「pam_loginuid.so」が壊れているようです何とかコンテナ。 –

2

から関連する行がありますsshdのためのベイグラント1.3.5およびドッキングウィンドウ0.7)Dockerfile構成:

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

マイsupervisord。 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 
+0

ログイン用のルートパスワードとは何ですか? – uvgroovy

+0

申し訳ありませんが、rootユーザーのパスワードを設定するためにchpasswdステップを省略しました。 – jamshid

4

私はsshdがドッカーレポから "CentOSの" イメージでの作業があります:私は修正するない必要はなかった

  • のsshd_configすなわち
  • 私は必要性をやっ設定されているUsePAM yesデフォルト最初の実行時にキーを生成するので、/etc/init.d/sshd startをDockerfileで実行してください。私は私のDockerfileがある.ssh

のパーミッションを修正する必要がありました

  • :ドッカーのウェブサイトから

    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"] 
    
  • +1

    authorized_keysとは何ですか? – jophde

    2

    、例Dockerizing an SSH Daemon Serviceは、この問題に対処Dockerfileを示しています。重要な行はコメントSSH login fix後sedコマンドである:それは、Ubuntuの画像に基づいています

    # sshd 
    # 
    # VERSION    0.0.2 
    
    FROM ubuntu:14.04 
    MAINTAINER Sven Dowideit <[email protected]> 
    
    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 '[email protected]\s*required\s*[email protected] optional [email protected]' -i /etc/pam.d/sshd 
    
    ENV NOTVISIBLE "in users profile" 
    RUN echo "export VISIBLE=now" >> /etc/profile 
    
    EXPOSE 22 
    CMD ["/usr/sbin/sshd", "-D"] 
    

    が、それは同様にCentOSの6のために動作します。

    +1

    リンクが壊れています。新しいURLはhttps://docs.docker.com/engine/examples/running_ssh_service/です – Soli

    関連する問題