2

Я пытаюсь настроить шлюз SSH. У меня есть физический хост (H) и несколько виртуальных машин на нем. Хост может подключиться к ssh к одной из виртуальных машин (A), а затем подключиться к ssh другим пользователям (назовем это B). У меня это в .ssh/config в H

Host B
  User foo
  ProxyCommand ssh foo@A nc %h %p

Теперь, когда я делаю ssh -vvv -l foo B на H я вижу эту ошибку: ssh_exchange_identification: Connection closed by remote host

cat /var/log/auth.log на A говорит:

Jun  7 18:54:00 ubuntu sshd[846]: Received disconnect from 192.168.129.1: 11: disconnected by user
Jun  7 18:54:00 ubuntu sshd[834]: pam_unix(sshd:session): session closed for user foo
Jun  7 18:54:11 ubuntu sudo: foo : TTY=pts/6 ; PWD=/home/foo ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
Jun  7 18:54:11 ubuntu sudo: pam_unix(sudo:session): session opened for user root by foo(uid=30000)

/etc/hosts.allow на A

sshd: ALL
ssh: 0.0.0.0/0.0.0.0

Кажется, H говорит, что A закрыл соединение, а A говорит, что H закрыл соединение!

/etc/ssh/ssh_config на H

Host *
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials no

Что еще может пойти не так?

2 ответа2

1

Возможно, вы захотите убедиться, что «Хост B» не должен включать A, если B - это шаблон, а не один хост. Я должен был исключить А из шаблона явно.

Host *.example.com !gateway.example.com
  ProxyCommand ssh -q -W %h:%p user_on_gateway@gateway.example.com
0

Попробуйте следующую конфигурацию в H host:

Host B
    ProxyCommand ssh -q -W %h:%p A

Это работает для меня. Просто добавьте пользователя foo, если вам нужно:

Host B
    User foo
    ProxyCommand ssh -q -W %h:%p foo@A

И убедитесь, что пользователь foo существует на A и B.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .