2016-09-14 5 views
1

Я пытаюсь установить туннель ssh в контейнер для докеров, работающий на моем удаленном виртуальном сервере.SSH Туннелирование в контейнер докеров

В основном я следовал инструкции здесь this post, где вы также можете найти более подробную информацию о том, что я пытаюсь достичь:

связан пост StackOverflow в: How to SSH into Docker?

На самом деле я настроить все правильно, но мое соединение прекращается каждый раз со следующим сообщением:


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! 
Someone could be eavesdropping on you right now (man-in-the-middle attack)! 
It is also possible that a host key has just been changed. 
The fingerprint for the RSA key sent by the remote host is <rsa-key>. 
Please contact your system administrator. 
Add correct host key in /home/rico/.ssh/known_hosts to get rid of this message. 
Offending ECDSA key in /home/rico/.ssh/known_hosts:31 remove with: ssh-keygen -f "/home/rico/.ssh/known_hosts" -R [<server-ip>]:33 
RSA host key for [<server-ip>]:33 has changed and you have requested strict checking. 
Host key verification failed. 

Я приложил скриншот здесь: https://s18.postimg.org/ivnnxj7a1/connection_closed.png

Моя командная строка:

ssh -p 33 [email protected]<server-ip>

где '33' является SSH порт контейнера Докер.

Что мне нужно сделать, чтобы подключение было принято моим Виртуальным сервером?

[UPDATE]

запустить команду, добавив также флаг -v и после вывода:

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 * 
debug1: Connecting to <server-ip> [<server-ip>] port 44. 
debug1: Connection established. 
debug1: identity file /home/rico/.ssh/id_rsa type 1 
debug1: identity file /home/rico/.ssh/id_rsa-cert type -1 
debug1: identity file /home/rico/.ssh/id_dsa type -1 
debug1: identity file /home/rico/.ssh/id_dsa-cert type -1 
debug1: identity file /home/rico/.ssh/id_ecdsa type -1 
debug1: identity file /home/rico/.ssh/id_ecdsa-cert type -1 
debug1: identity file /home/rico/.ssh/id_ed25519 type -1 
debug1: identity file /home/rico/.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.8 
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.7p1 Debian-5+deb8u3 
debug1: match: OpenSSH_6.7p1 Debian-5+deb8u3 pat OpenSSH* compat 0x04000000 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug1: kex: server->client aes128-ctr [email protected] none 
debug1: kex: client->server aes128-ctr [email protected] none 
debug1: sending SSH2_MSG_KEX_ECDH_INIT 
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY 
debug1: Server host key: ECDSA <server-mac-address> 
debug1: Host '[<server-ip>]:44' is known and matches the ECDSA host key. 
debug1: Found key in /home/rico/.ssh/known_hosts:32 
debug1: ssh_ecdsa_verify: signature correct 
debug1: SSH2_MSG_NEWKEYS sent 
debug1: expecting SSH2_MSG_NEWKEYS 
debug1: SSH2_MSG_NEWKEYS received 
debug1: SSH2_MSG_SERVICE_REQUEST sent 
debug1: SSH2_MSG_SERVICE_ACCEPT received 
debug1: Authentications that can continue: publickey,password 
debug1: Next authentication method: publickey 
debug1: Offering RSA public key: /home/rico/.ssh/id_rsa 
debug1: Authentications that can continue: publickey,password 
debug1: Offering RSA public key: <my-email>@gmail.com 
debug1: Authentications that can continue: publickey,password 
debug1: Offering RSA public key: <my-email>@gmail.com 
debug1: Authentications that can continue: publickey,password 
debug1: Trying private key: /home/rico/.ssh/id_dsa 
debug1: Trying private key: /home/rico/.ssh/id_ecdsa 
debug1: Trying private key: /home/rico/.ssh/id_ed25519 
debug1: Next authentication method: password 
[email protected]<server-ip>'s password: 

Даже если я создал новый корневой пароль, если он не работает

ответ

1

Вы можете обход, который выдает, добавив это в свою ssh команду:

-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no 

Чтобы решить проблему аутентификации, следовать этому guide создать authorized_keys файл и, наконец, добавить его к изображению с помощью Dockerfile:

ADD authorized_keys /home/docker/.ssh/authorized_keys 

ПРИМЕЧАНИЯ: в @stepf комментарии ssh не предназначен способом доступ к докерным контейнерам.

+0

Он частично работал. Сообщение ушло, но оно меня не пускает. На самом деле он запрашивает пароль. Я устанавливаю пароль как на виртуальном сервере, так и на докере, но никто не работает. Что еще я могу сделать? – Ric0

3

Возможно, вы захотите пересмотреть использование SSH. Как отмечают в комментарии в вашем linked post, это противоречит концепции Докера. Кроме того, запуск дополнительного SSH-сервера увеличивает потенциальную поверхность атаки.

Есть две альтернативы для получения доступа к вашим емкостям:

  1. SSH в ВМ и использовать docker exec, например, docker exec -it <yourcontainer> bash
  2. Подключите локальный клиент к демону докеров, запущенному внутри вашей виртуальной машины. Это продвинутый подход, но Docker имеет good documentation, как это сделать securely. В nuthshell: вы настраиваете демона на вашей виртуальной машине для прослушивания сокета TCP, например. dockerd -H=0.0.0.0:2376.Затем вы указываете локальный клиент на соответствующий IP-адрес, docker -H=$HOST:2376 version. Каждому необходимо обеспечить с помощью подписанных сертификатов TLS.

Надеюсь, это поможет!

Смежные вопросы