Как создать постоянный SSH-туннель?

Как создать постоянный SSH-туннель?

У меня есть ноутбук Mac, и я хотел бы иметь постоянный туннель ssh, чтобы я всегда мог войти из-за пределов локальной сети. Я ищу что-то, что будет работать, когда сервер изначально недоступен (например, если у меня нет подключения к Интернету при загрузке), и автоматически запустит туннель, когда это возможно.

Я пробовал вставить @reboot autosshстроку в свой crontab, но обнаружил, что сеансы autosshчасто начинались с отключения и autosshзавершались, если первая попытка не удалась. Мое текущее решение — небольшой скрипт и cronjob:

# crontab
/home/blackl/bin/script &!

# script
#!/bin/sh
while true; do ssh -Ngn -R $some_port:localhost:22 $server; sleep 30; done;

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

решение1

Извините, что отвечаю очень поздно, и, возможно, вы уже сталкивались с этим решением, ноздесьвот как это можно сделать с помощью механизма launchctl в OS X.

Я не думаю, что у него это есть.довольноверно; вы бы использовали ключ "KeepAlive" (со значением "true") вместо устаревшей пары ключ/значение "OnDemand/false". Кроме того, я не знаю, почему он перенаправляет на тот же порт на удаленном хосте (1666), что и 22. Тем не менее, вы поняли идею. Я запустил свой и нормально запустил его на нашем веб-сервере.Многоболее элегантно, чем бесконечный цикл.

О, и вместо того, чтобылингончто он упоминает, вы можете использовать чудесныйКонтроль запускадля настройки, изменения и мониторинга. Если вы не знакомы с launchctl, я настоятельно рекомендую прочитать учебник в программе или на сайте, чтобы понять, что происходит. Извините - я бы дал ссылку на учебник, но у меня недостаточно репутации :/

Связанный контент