туннель ssh, выходящий из строя в течение ТОЧНО двух часов постоянно?

Я запускаю этот ssh туннелирующий скрипт на моем удаленном сервере (CentOS) в терминале для получения до моего домашнего компьютера (Ubuntu):

while true
do
  ssh -R 49666:localhost:22 (my name@ my home ip) -N
  sleep 15
done

У меня есть он цикл (сон 15 частей), потому что туннели выходят из строя иногда и когда это делает, кто-то должен физически быть там для запуска его снова. Цикл является обходным решением, хотя, возможно, не хорошее...

Затем из дома, я могу ssh к серверу ssh'ing к localhost на порте 49666.

Все время от времени, тем не менее, я случайным образом просто разъединяюсь в течение ТОЧНО двух часов и 15 секунд. Я вижу это в своем auth.log:

Accepted publickey from (work ip)
error: bind: Address already in use
error: channel_setup_fwd_listener_tcpip: cannot listen to port: 49666

Я первоначально думал, что не должен выполнять SSH-R в цикле, потому что это будет, очевидно, продолжать пытаться связать с тем же портом. Но вещь, вышеупомянутый отказ происходит, возможно, каждые 14 часов, не каждые 15 секунд, когда цикл подразумевал бы. Я подозреваю, что при попытке к SSH-R соединения, которое уже существует, это просто ничего не делает?

Моя следующая мысль была то, что, возможно, некоторый другой сервис открывается на порте 49666 иногда и портит туннель, и затем когда сценарий пытается связать с ним 15 секунд спустя, он не может, потому что другой сервис использует его. Но я не могу выяснить, каков другой сервис, если он существует, мог бы быть. Я использую netstat, lsof, и т.д. но я никогда не вижу, что что-либо работает на том порте. Я не уверен, существует ли способ видеть историю порта, или если можно только видеть вещи использовать его, в то время как они активны. Но я подозреваю, что ничто не пытается использовать его, но это возможно...

После того, как я получу "уже используемый" отказ, я не могу ssh. Но затем, каждый раз, ТОЧНО два часа и 15 секунд спустя, я получаю это:

Accepted publickey from (same work ip)

но без последующих отказов, и я могу ssh как нормальный снова. Количество времени до следующего отказа кажется случайным, но от отказа до следующего восстановления туннеля, это - ТОЧНО два часа и 15 секунд. Я предполагаю, что существуют некоторые 2 часа cooldown вещь брандмауэра, и затем в сценарии говорится для ожидания 15 секунд, так, чтобы составил в целом время. Шаблон здесь заставляет меня думать, что существует некоторый способ сконфигурировать это. Проблема, я понятия не имею, почему "адрес уже используемая" вещь происходит для начала, и я не знаю, на какой стороне (клиент-серверный или удаленный сервер) двухчасовой cooldown происходит. У меня есть в значительной степени все настройки по умолчанию на моем домашнем компьютере. У меня нет sudo на работе (но я могу заставить sudo проверять что-то на меня иногда), таким образом, я не знаю то, на что похож их sshd_config, но я предполагаю, что нет ничего странного.

Может кто-то помогать мне определить: 1: Почему "адрес уже используемый" отказ происходит и что делать с этим? и 2: Почему точное двухчасовое и 15 вторых разрывов и что делать с этим?

0
задан 22 December 2016 в 17:55

1 ответ

Используйте autossh . Это будет периодически проверять туннель и после того как это повреждается, это снова соединяется автоматически:

autossh -M 2000 -R 49666:localhost:22 (my name@ my home ip) -N
0
ответ дан 7 November 2019 в 06:50

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

Похожие вопросы: