SSH Remote Port Forwarding – vzdaleny pristup na PC za NATem

Casto se potrebujeme pripojit na pocitac, ktery je za NATem. Obvykle se vyuziva VPN. Pokud vsak potrebujeme zpristupnit pouze nekolik malo, nebo jeden port, je nejpohodlnejsi a nejrychlejsi pouzit SSH.

Princip presmerovani SSH portu je videt na nasledujcim obrazku:


(obrazek prevzaty z http://www.dirk-loss.de/ssh-port-forwarding.png)

Nas zajima remote port forwarding. Pokud se nekdo pripoji na port X na serveru, dojde k presmerovani na ip:port na klientovi.

Nastaveni serveru

V zakladu OpenSSH nepovoluje remote port forwarding. Zapneme ho jednoduse pridanim

GatewayPorts yes
AllowTcpForwarding yes
do /etc/ssh/sshd_config a restartovanim ssh systemctl restart ssh.service
nasledne je dobre si overit, zda opravdu k restartu doslo pomoci journalctl -n 5
Na serveru musime samozrejmne otevrit prislusny port ve firewallu, ktery se bude forwardovat!:
iptables -I INPUT -p tcp --dport 2222 -j ACCEPT

Pripojeni z klienta

Na PC, kde se budeme pripojovat spustime:

# ssh -R 0.0.0.0:2222:localhost:22 root@server.com

Pokud se nekdo pripoji na server.com na port 2222, tak se spojeni presmeruje skrz tunel na localhost 22. Server musi poslouchat na 0.0.0.0!

# ssh -R 0.0.0.0:2222:10.20.30.40:22 root@server.com

Pokud nyni spustime prikaz na svem PC, tunel se bude smerovat na IP 10.20.30.40 – libovolna IP dostupna z LAN, ve ktere je PC.

Jestlize nepotrebujeme terminal, ale samotny ssh tunel, pridame parametr -nnT :

# ssh -nNT -R 0.0.0.0:2222:localhost:22 root@server.com
# ssh -nNT -R 0.0.0.0:2222:10.20.30.40:22 root@server.com/pre>

 

Kdyz nebude fungovat, overime, zda server na danem portu posloucha:

# lsof -i:2222
sshd    6976 root    7u  IPv4 620225      0t0  TCP *:2222 (LISTEN)
...
dulezite je *:2222musi poslouchat na vsech IP!
 
Pripojeni na protunelovany PC je pak nasledujici:
# ssh -p 2222 ubuntu@server.com
 
Ukazka:
+----------------+         +-----+
| Uzivatelsky pc +---------> NAT +------------+
+----------------+         +-----+            |
                                              |
                                              |
                                              |
                                         +----v----+
                                         | SERVER  |
                                         | VEREJNA |
                                         | IPv4    |
                                         |         |
                                         +----+----+
                                              |
                                              |
                                              |
                                              |
                                           +--v--+
                                           | NAT |
                                           +--+--+
                                              |
                                              |
                                              |
                               +-----+     +--v---+
                               | PC n<-----+ PC 1 |
                               +-----+     +------+
„Uzivatelsky PC“ si vytvori tunel na „PC n“ prikazem spustenym na „PC 1“.

 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *