【问题标题】:Docker, can't ssh to rhel/centos container on Ubuntu 14.04Docker,无法 SSH 到 Ubuntu 14.04 上的 rhel/centos 容器
【发布时间】:2015-05-30 21:27:59
【问题描述】:

我已经追了将近一个星期,但无法让它工作。我的 Ubuntu 14.04 笔记本电脑上安装了 Docker 1.0.1。当我启动 rhel/fedora/centos 容器并安装 sshd 时,我无法建立 ssh 连接。对 Ubuntu 容器执行相同操作也可以正常工作。

这是我的 ssh 尝试的调试输出:

OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [127.0.0.1] port 4022.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/mb/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/mb/.ssh/id_rsa type 1
debug1: identity file /home/mb/.ssh/id_rsa-cert type -1
debug1: identity file /home/mb/.ssh/id_dsa type -1
debug1: identity file /home/mb/.ssh/id_dsa-cert type -1
debug1: identity file /home/mb/.ssh/id_ecdsa type -1
debug1: identity file /home/mb/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/mb/.ssh/id_ed25519 type -1
debug1: identity file /home/mb/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
debug2: fd 3 setting O_NONBLOCK
debug3: put_host_port: [localhost]:4022
debug3: load_hostkeys: loading entries for host "[localhost]:4022" from file "/home/mb/.ssh/known_hosts"
debug3: load_hostkeys: loaded 0 keys
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: setup hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: setup hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<3072<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
Connection closed by 127.0.0.1

我已经阅读了无数关于调整 ssh_config(密码和 MAC)和 sshd_config(UsePam=no)的帖子,但没有一个有帮助。

最后,有趣的是我没有在第一次连接时收到通常的警告,即
RSA 密钥指纹是 wh:at:ev:er:wh:at :ev:er:wh:at:ev:er.
您确定要继续连接吗(是/否)?

用于启动 centos 容器的命令: docker run -i -t -p 14022:22 centos:6 /bin/bash

用于启动 sshd 的命令: /usr/sbin/sshd -D -o UseDNS=no -o UsePAM=no -o PasswordAuthentication=yes -o UsePrivilegeSeparation=no -o PidFile=/tmp/sshd.pid

用于连接容器的命令: ssh mb@localhost -p 14022

【问题讨论】:

  • 也许将您的尝试与this Dockerfile for SSHing into CentOS 进行比较,看看有什么不同。
  • 完全相同:$ ssh localhost -p 8022 返回“Connection closed by 127.0.0.1”。这几乎感觉像是一个防火墙问题,除了它适用于 Ubuntu 映像并且 ssh 调试显示成功握手。
  • 另一个测试表明 rhel 6.5(相同的 Centos 容器)上的 Docker 工作正常。似乎只有我的 Ubuntu Docker 主机(一台笔记本电脑,一台台式机)存在连接问题,并且仅在连接到 rhel/centos 映像时。令人沮丧。
  • 伙计,这令人沮丧。使用指向的 Dockerfile @jwodder,当服务通过 supervisord 启动时,我无法 ssh 进入。如果我用 supervisorctl 停止 sshd 但在命令提示符下使用 /usr/sbin/sshd -D 启动它,ssh = success?!? supervisord 执行的命令与我使用的完全相同。两者都以 root 身份执行。

标签: ubuntu ssh docker


【解决方案1】:

我能想到的唯一有效答案:用 Centos 7 替换 Ubuntu docker 机器。一切都很好。

【讨论】:

    猜你喜欢
    • 2021-01-22
    • 2018-06-04
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    相关资源
    最近更新 更多