在docker容器中执行真正的SSH

在docker容器中执行真正的SSH,docker,ssh,Docker,Ssh,我正在尝试使用此指南: 要对正在运行的容器执行普通SSH,请首先尝试获取正在运行的容器的ip地址: $ sudo docker inspect 4b928aca09ae "NetworkSettings": { "Bridge": "", "SandboxID": "74ce28dd93a6fa6158ebc3f4ec73f1dba74ddbfc183f4ebf9cca77ced2571174", "Ha

我正在尝试使用此指南:

要对正在运行的容器执行普通SSH,请首先尝试获取正在运行的容器的ip地址:

$ sudo docker inspect 4b928aca09ae

        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "74ce28dd93a6fa6158ebc3f4ec73f1dba74ddbfc183f4ebf9cca77ced2571174",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "22/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "32768"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/74ce28dd93a6",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "5927380d426ce9d5684dc17982c7f01af38d850218aa476d6ed8f457c8a39165",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.8",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:08",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "9c02e185366bb205bded7cab97766cb0e91315a4317affedc98f299831d5ceae",
                    "EndpointID": "5927380d426ce9d5684dc17982c7f01af38d850218aa476d6ed8f457c8a39165",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.8",
                    "IPPrefixLen": 16,
基于上述情况,我试图:

$ ssh root@172.17.0.1 -p 32768
root@172.17.0.1's password: 
Permission denied, please try again.
root@172.17.0.1's password: 
以及:

以及:

以及:

使用指南中的密码:
screencast
,但它不起作用

还验证了它是否正在运行:

$ sudo docker ps
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                                            NAMES
4b928aca09ae        eg_sshd                    "/usr/sbin/sshd -D"      3 days ago          Up 33 minutes       0.0.0.0:32768->22/tcp                            test_sshd
如果我使用以下方式SSH到容器:

$ sudo docker exec -i -t 4b928aca09ae /bin/bash
相反,看起来根用户没有.ssh文件夹:

root@4b928aca09ae:~# pwd
/root
root@4b928aca09ae:~# ls -la
total 20
drwx------  2 root root 4096 Nov 30 22:01 .
drwxr-xr-x 49 root root 4096 Nov 30 22:01 ..
-rw-------  1 root root   46 Nov 30 22:01 .bash_history
-rw-r--r--  1 root root 3106 Oct 22  2015 .bashrc
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
我还试着跑:

root@4b928aca09ae:~# ps -A | grep sshd
    1 ?        00:00:00 sshd
但我不确定该怎么做


有什么建议吗?

您需要使用您的主机IP地址,而不是docker IP,因为-p 32768是映射端口,它没有在容器中运行。所以使用sshroot@hostip-p映射端口

错误的IP地址?首先,您可以运行
sudo docker exec-it 4b928aca09ae/bin/bash
。。其次,您是否尝试将ssh改为172.17.0.8而不是172.17.0.1?是的,您也尝试过,请参阅更新的帖子和yes docker exec。。。工作正常,但我需要普通ssh版本。您是否构建并运行了
eg\u sshd
docker映像?是的,运行了指南中的步骤,包括docker构建-t eg\u sshd。我还尝试了localhost,将同样不成功的结果放入容器中,检查root~/.ssh中的ssh文件夹,并检查ssh服务是否正在运行。根据您的建议,我更新了帖子,但这方面仍然没有进展。只要sshd正在运行,就不需要用户拥有~/.ssh/文件夹,我还没有尝试进行任何私钥/公钥登录。我已经从dockerfile构建了eg_sshd,首先我得到了“对等重设连接”。然后我在容器中手动重新启动了sshd,现在它正在连接。在您的情况下,要么密码不正确,要么在Ceyep尝试重新启动ssh服务器时尝试手动重新启动ssh服务,结果相同。现在将使用KVM或类似工具来测试真正的SSH。
$ sudo docker exec -i -t 4b928aca09ae /bin/bash
root@4b928aca09ae:~# pwd
/root
root@4b928aca09ae:~# ls -la
total 20
drwx------  2 root root 4096 Nov 30 22:01 .
drwxr-xr-x 49 root root 4096 Nov 30 22:01 ..
-rw-------  1 root root   46 Nov 30 22:01 .bash_history
-rw-r--r--  1 root root 3106 Oct 22  2015 .bashrc
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
root@4b928aca09ae:~# ps -A | grep sshd
    1 ?        00:00:00 sshd