Перенаправленные порты autossh остаются открытыми при сбое подключения

Я пытаюсь установить обратный туннель SSH из моей домашней сети. У меня так получилось, что autossh успешно подключается один раз (и только один раз) за перезагрузку. Я пересылаю удаленные порты на свой локальный компьютер, чтобы я мог подключиться, находясь вне дома. Я нахожусь в спутниковом интернете и нахожусь за брандмауэром с двойным NAT, так что подключение напрямую к моей домашней сети не является началом.

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

Не повезло с поиском в Google или на форуме, поэтому я надеюсь, что кто-то здесь может указать мне правильное направление.

Я настроил сервер и локальную машину, следуя инструкциям здесь:

http://linuxaria.com/howto/permanent-ssh-tunnels-with-autossh

Мой скрипт подключения приведен ниже и включен в /etc/rc.local:

su -s /bin/sh autossh -c 'autossh -M 20000 -f -i /home/autossh/.ssh/id_rsa -N -R 99999:localhost:22 autossh@remotehost.com'

Ура и заранее спасибо за любую помощь!

Corey

1 ответ

Хорошо... Частичное решение, хотя я все еще не уверен, что оно полностью решено. Я внес следующие изменения, и, по крайней мере, все еще связано ночью. Я не уверен, будет ли он успешно переподключен после завершения сеанса.

  1. Добавлены следующие строки на удаленный сервер sshd_config:

    ClientAliveInterval 600
    ClientAliveCountMax 12
    
  2. Изменен скрипт rc.local для запуска autossh следующим образом (добавлены параметры ServerAliveInterval и ServerAliveCountMax):

    su -s /bin/sh autossh -c 'autossh -M 20000 -f -i /home/autossh/.ssh/id_rsa -o "ServerAliveInterval 120" -o "ServerAliveCountMax 5" -N -R 99999:localhost:22 autossh@remotehost.com'
    

Я также обнаружил, что подключение с использованием GatewayPort было ненадежным. Вместо:

user@machine1 $ ssh -p 99999 remotehost.com

Я подключаюсь к удаленному хосту напрямую и затем подключаюсь к порту 99999 на localhost, аля:

user@machine1 $ ssh remotehost.com
user@remotehost $ ssh -p 99999 localhost

Это кажется более надежным. Порт шлюза имеет тенденцию зависать. Но если я подключусь в два этапа, как указано выше, я все равно получаю. Я буду публиковать сообщения с обновлениями, как только у меня будет возможность проверить, будет ли он повторно подключаться после завершения сеанса.

Надеюсь, это может помочь другим!

Corey

Другие вопросы по тегам