LINUX.ORG.RU
решено ФорумAdmin

Настроить back ssh

 


1

2

Добрый день, у меня за NAT находится Linux машина. Нужно получить к ней доступ по ssh, пробросить порты не вариант, т.к. она может находится неизвестно где. Таким образом решил воспользоваться back ssh, создал пользователей, все настроил.

sshpass -p mypass ssh -R 1588:localhost:22 pfwd@server.ru -p 22

Все работает. Проблема заключается в автоматическом запуске этого скрипта, т.к. машина может перезагружаться, терять соединение. Я решил его поместить в cron, но это не сработало, cron запускает, все соединяется, но тут же все отваливается (сессия возможно закрывается). Можно как-нибудь это порешать, не создавая отдельно демона, которые будет это все запускать, следить и т.д.

Так, вроде нашел решение! https://habr.com/ru/post/81607/

TUNCMD1='ssh -f -N -R 2222:10.11.12.13:22 username@99.88.77.66'
TUNCMD2='ssh -f -N -R 2080:10.11.12.14:80 username@99.88.77.66'

*/5 * * * * pgrep -f "$TUNCMD1" &>/dev/null || $TUNCMD1
*/5 * * * * pgrep -f "$TUNCMD2" &>/dev/null || $TUNCMD2

Ответ на: комментарий от manntes-live

Да и работает как-то муторно, но тут задача что бы хотя бы разок удалось подключиться. В VPN я слабо разбираюсь, можно как-нибудь там без генерации ключей всяких просто с клиента по логину паролю обратиться?

patriarh_kuril ()
Ответ на: комментарий от anonymous

Ну эта схема заработала ( с back ssh) завтра отправляю систему в регион с ужасной связью, посмотрю как себя это решение покажет. Может действительно будет сподручней vpn настроить.

patriarh_kuril ()

Да, нужно -N и в системд сервис засунуть. И ему автостарт сделать. И бесконечное количество повторов перезапуска. Костыль с кроном доставил)) Хинт, можно использовать два раза -R. И сделать keep alive пинги на стороне сервера 3 сек, и их количество max fail 5, чтоб если сеть отвалилась, форварднутый порт быстро освободился.

Bers666 ★★★★★ ()
Ответ на: комментарий от Bers666

А почему нет просто какого-нибудь демона типа tunnel_server, который тупо делает туннель точка-точка между двумя ПК. Как я вижу приложение моей мечты [code] tunnel_server -p 31337 tunnel_client -h myserver.ru -p 31337 -l 228 [/code] И все, лезешь на сервер на порт 228 и там [b]стабильный коннект[/b] с клиентом за натом.

patriarh_kuril ()
Ответ на: комментарий от patriarh_kuril

Да есть подобные, я лично перепробовал
Gost
Chisel

У них есть баг, не освобождают порт (в твоём примере 228) быстро при отвале коннекта. Вообще очень мало есть проксей которые поддерживают remote port bind. Пока что ssh -R лучший, именно для нестабильного коннекта.

Bers666 ★★★★★ ()
Ответ на: комментарий от patriarh_kuril

А вообще ещё есть zerotier, тупо делаешь открытую сеть и туда заходишь с сервера и клиента. Это уже l2 туннель. При смене ip иногда до минуты переподключается. Но очень большие пинги и потери пакетов. Зато бесплатно.

Bers666 ★★★★★ ()