Portál AbcLinuxu, 6. května 2025 16:25

Dotaz: SSH auto remote port forwarding

5.2.2020 18:24 darren97 | skóre: 4
SSH auto remote port forwarding
Přečteno: 730×
Odpovědět | Admin
Ahojte, mam server so statickou verejnou IP + server doma co je za NAT. Pouzival som remote port forwarding zo servera doma na server s verejnou IP, aby sluzby servera co je doma boli dostupne aj z internetu. Kazdopadne robil som to rucne a nechaval som to bezat v backround-e. Teraz potrebujem uz dva porty zo servera doma dat na server s verejnou IP. Su navody na internete, ale nic take extra riesenie som nenasiel. Viete mi poradit v akom ssh konfigu viem nastavit, aby vzdy po boote spravilo tento remote port forwarding na 2 porty na ten verejny server (samozrejme SSH je cez certifikat a nie heslo). Dik.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.2.2020 18:25 darren97 | skóre: 4
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pripajam este nejaku moznost nejakeho autoreconnect, v pripade ze spadne session alebo sa nebodaj rebootne server s verejnou IP.
5.2.2020 18:33 NN
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jmenuje se to autossh, ale neni to 100% spolehlive radeji bych se poohlednul po VPN reseni, ktere ma lepe vyresenou obnovu spojeni.
6.2.2020 01:21 majales | skóre: 29 | blog: Majales
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi bych použil autossh startované jako systemd service.. to je vcelku spolehlivé.
6.2.2020 10:26 GeorgeWH | skóre: 42
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
oxymoron ako vysity :D
Řešení 1× (darren97 (tazatel))
otasomil avatar 6.2.2020 10:51 otasomil | skóre: 39 | blog: puppylinux
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdravim
Pouzijte autossh jak tu uz radi. Pokud potrebujete dalsi port tak neni problem otevrit proste dalsi ssh spojeni. Normalne to tak mam a bezne to funguje. Muzete se inspirovat zde timto skriptem ssh_tunnel.sh ktery spustite Cronem pri startu:
#!/bin/bash
while :; do
autossh -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -o "ExitOnForwardFailure yes" -i /home/user/.ssh/id_rsa -M 0 -N -R 32000:127.0.0.1:8080 user@server.tld -p 22
sleep 300
done
Zpristupnite tak na domacim serveru sluzbu ktera bezi na localhostu a portu 8080 tak ze bude dostupna na VPS na portu 32000 Zapis do Cronu:
@reboot /bin/sleep 60; /usr/bin/screen -Sdm screen1 /home/user/httpd/ssh_tunnel.sh
No a pro dalsi port si udelate totez akorat prepisete spravne porty. Spolehlivost paradni, tunel pokud padne tak se sam po par minutach znova otevre. Nestalo se mi ze by to nefungovalo.
K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
6.2.2020 11:13 darren97 | skóre: 4
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Ahoj, vyzera to dobre, dakujem :) Urcite to vyskusam. ten dalsi port som myslel jednoducho, ze tam dam druhy -R statement, co by nemal byt problem, napriklad: #!/bin/bash while :; do autossh -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -o "ExitOnForwardFailure yes" -i /home/user/.ssh/id_rsa -M 0 -N -R 32000:127.0.0.1:8080 -R 32001:127.0.0.1:8081 user@server.tld -p 22 sleep 300 done
Josef Kufner avatar 6.2.2020 11:59 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Teda spouštět to pomocí screenu a cronu je docela zvrhlé. Napsat jednu systemd službu je spolehlivější a mnohem přehlednější.
[Unit]
Description=AutoSSH tunel
#After=networking.service

[Service]
ExecStart=/usr/bin/autossh -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -o "ExitOnForwardFailure yes" -i /home/user/.ssh/id_rsa -M 0 -N -R 32000:127.0.0.1:8080 user@server.tld -p 22
KillMode=process
Restart=always
RestartSec=300

[Install]
WantedBy=multi-user.target
Alias=ssh-tunel.service
Hello world ! Segmentation fault (core dumped)
otasomil avatar 6.2.2020 15:49 otasomil | skóre: 39 | blog: puppylinux
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
No je to morbidni ale v dobe kdy sem toto resil tak Systemd nebylo bezne nebo bylo v zacatcich. Navic ve Screenu se lze podivat v pripade potizi co se deje, jen takto jsem vychytal spadavani tunelu.
K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
Josef Kufner avatar 6.2.2020 16:00 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
systemctl status ssh-tunel.service ti ukáže stdout a stderr té služby a zda vůbec běží. Pokud chceš víc, než jen pár posledních řádek, tak journalctl -u ssh-tunel.service. Nastavit to jde volbami StandardOutput a StandardError.
Hello world ! Segmentation fault (core dumped)
otasomil avatar 6.2.2020 18:09 otasomil | skóre: 39 | blog: puppylinux
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
A takto se daj spoustet sluzby i jako bezny uzivatel? Myslim ze je zcela zbytecne poustet nejaky tunel jako root pokud teda nejde o porty pod 1024. Proto Cron a v nem Screen jako kterykoli bezny uzivatel.
K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
Josef Kufner avatar 6.2.2020 18:33 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Samozřejmě. Stačí připsat User=…. Možností je tam spousta.

A zrovna na přeposílání portu by se hodilo využít socket activation a spouštět tunel jen když je používán.
Hello world ! Segmentation fault (core dumped)
otasomil avatar 6.2.2020 20:19 otasomil | skóre: 39 | blog: puppylinux
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
A mohu systemd services vytvorit i jako bezny uzivatel ktery nema roota?
K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
7.2.2020 12:29 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Ano, staří službu umístit do ~/.config/systemd/user/moje.service a pak
systemctl --user enable/start/.....  moje.service
Jediný problém pak je, že dafaultně se uživatelské služby nestartují po startu systému, ale až po nalogování uživatele a ukončují se po odhlášení uživatele (posledním odhlášení). To se musí uživateli povolit pod rootem
loginctl enable-linger username
k3dAR avatar 6.2.2020 16:21 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
nic si z toho nedelej :-) take to resim pres cron a nepouzivam ani autossh, ale vlastni skript co navaze ssh spojeni pokud nevidi ${ssh_tunel_command} mezi bezicima :-) akorat nepouzivam screen, odladeni sem delal poustenim skriptu rucne :)
porad nemam telo, ale uz mam hlavu... nobody
7.2.2020 11:44 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Ak pouzijem systemd, tak je vobec nutne spustat autossh? Nestaci ssh a restarty spadnuteho spojenia nechat na systemd?
If you hold a Unix shell up to your ear, you can you hear the C.
Josef Kufner avatar 7.2.2020 13:37 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
V podstatě ano, ale autossh má v sobě pár triků pro lepší sledovaní stavu tunelu, kdežto systemd pracuje jen na úrovni procesu, zda běží, či neběží. Pokud by se poladilo nastavení systemd, ssh, keep alive paketů a socket activation, tak by se asi autossh dalo plně nahradit.
Hello world ! Segmentation fault (core dumped)
otasomil avatar 7.2.2020 14:35 otasomil | skóre: 39 | blog: puppylinux
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Ssh samo o sobe obcas z nevysvetlitelnych duvodu padne, nekdy po par hodinach a nekdy i mesicich. Autossh resi tento problem. Kazdopadne pokud to udelate tak jak pisete tak porad mate moznost spojeni vytuhle sestrelit na serveru a skript pro systemd se postara o opetovne spojeni. Toto se hodi ale pouze pokud potrebujete pristup jen pro sebe.
K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
7.2.2020 17:36 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Ha, vsetko tu uz bolo, a ani nie as tak davno AbcLinuxu: autossh vs systemd. A este aj diskutujuci sa ciastocne prekryvaju.

Nie som prvy, koho napadlo, ze so systemd uz autossh nie je nutne: README-setup-tunnel-as-systemd-service

Skombinovat vsetko dokopy, pridat bez s enable-linger pod non-rootom a je to dokonale.
If you hold a Unix shell up to your ear, you can you hear the C.
7.2.2020 19:53 NN
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Reseni restartovanim sluzby kazdych 5 vterin myslis vazne?
8.2.2020 13:39 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
To myslíte vážně, že pořád píšete o věcech, o kterých nic nevíte? Najít si manuálovou stránku systemd.service a zjistit si, co znamená RestartSec, přece není až tak těžké.
8.2.2020 14:13 NN
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
To opravdu neni:
 Configures the time to sleep before restarting a service (as configured with Restart=). Takes a unit-less value in seconds, or a time span value such as "5min 20s". Defaults to 100ms.
Znamena to snad neco jineho, nez ze se bude sluzba kazdych 5 sekund restartovat? Ne? lol..
8.2.2020 14:40 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Pro blbé, kteří si to neumí přečíst v manuálové stránce: znamená to, že pokud bude nutné službu restartovat (podle konfigurační volby Restart), počká se s restartem (v tomto případě) 5 sekund. Konfigurační volba Restart pak určuje, kdy k tomu restartu má dojít – několik voleb je při ukončení hlavního procesu (a rozlišují se různé návratové kódy ukončení), další možnost je na základě watchdogu. V odkazovaném příkladu je Restart=always, tj. pokud se hlavní proces ukončí s libovolným návratovým kódem, 5 sekund se počká a pak se nastartuje znovu.

Důvod, proč se používá ten odklad při restartu, je ten, že ukončení a/nebo start mohou být dost často náročné operace. Pokud by ve službě (nebo konfiguraci či datech) byla nějaká chyba, která by způsobovala, že služba nenaběhne správně a brzy se ukončí, můžete skončit s tím, že se služba bude bez přestání pořád dokola jen restartovat a restartovat, a dost tím vytíží počítač.

Ale fascinuje mne, že jste si opravdu myslel, že se každá služba pod systemd ve výchozí nastavení restartuje každých 100 milisekund. To už je záporné IQ, ne?
9.2.2020 10:52 NN
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Fuck off.
9.2.2020 13:54
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
No ale, má pravdu, předsedo.
k3dAR avatar 6.2.2020 16:28 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Odpovědět | | Sbalit | Link | Blokovat | Admin
nebylo zmineno, sice netusim zda s autossh to take je vhodne, logicky predpokladam ze ano, ale s vlastnim resenim pouzivam na strane cile (tedy toho s verejnou IP) v /home/uzivatel_pouzit_pro_ssh_spojeni_ze_zdroje/.ssh/authorized_keys omezeni pouzitemu klicu jen pro navazani tunelu, tedy na radky pred/vpravo klicem:
command="/bin/sleep 4294967001",no-agent-forwarding,no-pty,no-user-rc,no-X11-forwarding,permitopen="localhost:5901",permitopen="localhost:2201" ssh-rsa nasledujeklic...
u sleep na konci pouziju stejne cislo jako konec cisla portu, kvuli identifikaci, pokud tunel ma problem zabiju v cili proces sleep s danym cislem a tunel se obnovi ...
porad nemam telo, ale uz mam hlavu... nobody
6.2.2020 22:10 darren97 | skóre: 4
Rozbalit Rozbalit vše Re: SSH auto remote port forwarding
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dakujem kazdemu za rady :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.