SSH-туннелирование в док-контейнер

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

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

Связанный пост Stackoverflow: Как подключиться к Docker по SSH?

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


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 root@<server-ip>

где «33» — это ssh-порт док-контейнера.

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

[ОБНОВЛЕНИЕ]

запустите команду, добавив также флаг -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
root@<server-ip>'s password: 

Даже если я установлю новый пароль root, он не сработает.


person Ric0    schedule 14.09.2016    source источник


Ответы (2)


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

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

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

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

person stepf    schedule 14.09.2016

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

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

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

ADD authorized_keys /home/docker/.ssh/authorized_keys

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

person Juan Diego Godoy Robles    schedule 14.09.2016
comment
Частично это сработало. Сообщение пропало, но меня не пускает. На самом деле просит пароль. Я установил пароль как на виртуальный сервер, так и на докер, но никто не работает. Что еще я могу сделать? - person Ric0; 14.09.2016