2013-08-11 69 views
14

Tôi đọc một bài báo SSH Daemon Service. Nhưng tôi muốn chạy trên Centos6.4. Vì vậy, tôi thiết lập từ hình ảnh centos chính thức với gần như cùng một istruction. Sau đó, tôi kết nối với máy chủ sshd centos, nhưng kết nối bị đóng ngay lập tức. Đây là tin nhắn.Không thể truy cập Centos sshd trên Docker

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. 

Tại sao tôi không thể kết nối máy chủ sshd centos?

Trả lời

19

Có vấn đề tương tự ở đây, hoạt động tốt nếu bạn tắt PAM trong cấu hình sshd.

Sau đây là các dòng có liên quan từ Dockerfile của chúng tôi

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

phù hợp với tôi! Cảm ơn bạn! – holys

+0

Thực sự là một ý tưởng hay khi chỉ cần tắt PAM? Tôi không phải là rất quen thuộc với ssh, nhưng PAM là viết tắt của "Pluggable Authentication Module", mà âm thanh kinda hữu ích. –

+1

Tôi gặp vấn đề tương tự với PAM và hóa ra là http://gaijin-nippon.blogspot.se/2013/07/audit-on-lxc-host.html 'pam_loginuid.so' này dường như bị hỏng container bằng cách nào đó. –

2

Tôi cũng đã phải tạo ra các phím máy chủ, trước đó "ssh -v" sẽ chỉ ngay lập tức thoát với

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

Dưới đây là làm việc của tôi (Vagrant 1.3.5 và docker 0.7) Cấu hình Dockerfile cho 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"] 

Giám sát viên của tôi. 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

Mật khẩu gốc để đăng nhập là gì? – uvgroovy

+0

Xin lỗi, tôi đã bỏ qua bước chpasswd để đặt mật khẩu của người dùng gốc. – jamshid

4

Tôi có sshd làm việc với "centos" hình ảnh từ Docker repo:

  • tôi đã làm không cần phải sửa đổi sshd_config tức là mặc định UsePAM yes được thiết lập
  • tôi đã làm nhu cầu để chạy /etc/init.d/sshd start trong Dockerfile của tôi khi tạo khóa trên lần chạy đầu tiên.
  • Tôi cần phải sửa chữa điều khoản trên .ssh

My Dockerfile là:

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 là gì? – jophde

2

Từ trang web Docker, ví dụ Dockerizing an SSH Daemon Service cho thấy một Dockerfile nhằm giải quyết vấn đề này. Điểm mấu quan trọng là lệnh sed sau khi bình luận SSH login fix:

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

Nó dựa trên một hình ảnh Ubuntu, nhưng nó hoạt động cho CentOS 6 là tốt.

+1

Liên kết của bạn bị hỏng. URL mới là https://docs.docker.com/engine/examples/running_ssh_service/ – Soli