У меня есть ноутбук 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, я настоятельно рекомендую прочитать учебник в программе или на сайте, чтобы понять, что происходит. Извините - я бы дал ссылку на учебник, но у меня недостаточно репутации :/