2

(только что спросил это на SO, но посоветовали взять его здесь)

Мне удалось создать обратный туннель SSH между Raspberry Pi 2 и моим сервером (сервер, который имеет статический IP-адрес), и он отлично работает. Учетная запись пользователя, которую я использую на сервере, называется "ksproxy" (на самом деле это не "прокси", а что угодно).

Сейчас я пытаюсь заставить autossh (из пакета autossh Debian / Raspbian ), но у меня ничего не получается. Я могу быть рядом.

(Я изменил реальный IP здесь в этом вопросе на 37.xxx.yyy.zzz чтобы не публиковать фактический IP-адрес сервера)

Вот что отлично работает: (без автосш)

На Rpi:

rspi@antlia:~ $ ssh -N -R 20000:localhost:22 ksproxy@37.xxx.yyy.zzz

На сервере (тот, который имеет статический IP):

ksproxy@37.xxx.yyy.zzz:~$ ssh rspi@localhost -t -p 20000
rspi@localhost's password:
rspi@antlia:~ $

Так что все работает нормально: я ввожу пароль и получаю терминал / подсказку.

Я даже могу получить доступ к Raspberry Pi со своего рабочего стола (сначала пройдя через сервер), выполнив:

ssh -t ksproxy@37.xxx.yyy.zzz "ssh rspi@localhost -p 20000"
ksproxy@37.xxx.yyy.zzz password:
rspi@localhost's password:
...
rspi@antlia:~

Сначала запрашивается пароль сервера, затем пароль Pi, и все в порядке.

Все идет нормально.

Теперь я пытаюсь сделать то же самое, но на этот раз с autossh:

rspi@antlia:~ $ autossh -M 20000 -N -i /home/rspi/.ssh/id_rsa ksproxy@37.xxx.yyy.zzz

ksproxy@37.xxx.yyy.zzz:~$ ssh rspi@localhost -p 20000

Это "работает", но просто застревает там, ничего не делая.

Я попытался «-vvv» выводить команды ssh, но это просто показывает, что ничего не происходит.

Если я попробую другой порт, он потерпит неудачу:

ksproxy@37.xxx.yyy.zzz:~$ ssh rspi@localhost -p 1234
ssh: connect to host localhost port 1234: Connection refused

Если я пробую правильный порт (20000), но на этот раз с параметром -t , то же самое: он "работает", но я не получаю никакого терминала / приглашения.

Вот вывод -vvv

ksproxy@37.xxx.yyy.zzz:~$ ssh -vvv rspi@localhost -t -p 20000
OpenSSH_6.7p1 Debian-5+deb8u1, OpenSSL 1.0.1k 8 Jan 2015
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 20000.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/ksproxy/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ksproxy/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
...
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u1

Он не запрашивает пароль, он не показывает какой-либо терминал / приглашение.

Что я не понимаю здесь или делаю неправильно?

Обратите внимание, что я не думаю, что это проблема брандмауэра, так как метод "non autossh" работает нормально (но тогда я не получаю функцию «всегда активен / переподключаться»). Мне бы очень хотелось, чтобы autossh работал (я знаю, что могу найти обходной путь, например, какой-нибудь crontab, автоматически перезапускающий мой ручной SSH-туннель, но это, вероятно, будет более хрупким, чем заставить autossh работать).

1 ответ1

1
$ autossh -M 20000 -N -i /home/rspi/.ssh/id_rsa ksproxy@37.xxx.yyy.zzz
...
$ ssh rspi@localhost -p 20000

В этом случае вы не используете опцию ssh -R для настройки обратного туннеля; вместо этого вы указываете опцию autossh -M . Параметр autossh -M заставляет autossh настроить туннель на этом порту, который autossh использует для своих собственных целей (для регулярной проверки того, что канал SSH все еще работает). Это не эквивалент параметра ssh -R. При подключении к порту 20000 в этом сценарии вы подключаетесь к частному порту тестирования подключения autossh.

Вы должны продолжить указывать обратный туннель, который вы хотите, используя опцию -R ssh. Если вы хотите использовать функцию эхо-порта autossh, вы должны запустить ее на другом порту:

$ autossh -M 20002 -N -R 20000:localhost:22 ksproxy@37.xxx.yyy.zzz

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