Odată ce puteți ajunge la serverul de lucru, puteți face asta cu ușurință.
Ipoteza pentru exemplu
- sistem sursă (acasă) : 10.0.0.1
- sistem de lucru (server de salt): 10.0.0.2 (ssh rulează pe portul standard 22/TCP)
- server de destinație: 10.0.0.3 (ssh rulează pe portul standard 22/TCP)
- port forward prin serverul B
Prin deschiderea tunelului ssh puteți seta portul local înainte (-L [<adresă_locală>:]<port_local>:<adresa_la distanță_la_redirecționare_la>:<port_la distanță_la_redirecționare_la> ). Apoi puteți deschide o altă conexiune ssh care indică <local_addr> dar cu parametru -p <port_local> sau primul tunel. Cu această configurație:
- primul tunel trebuie să fie până când restul funcționează
- puteți avea mai multe conexiuni peste primul tunel (mai multe conexiuni ssh, conexiune scp,...)
(1) ssh -L 10022:10.0.0.3:22 10.0.0.2
(2) ssh -p 10022 127.0.0.1
(3) scp -P 10022 <fișier_local> 127.0.0.1:<fișier_destinație>
+-----+ +-----+ +-----+
| A |=== 1 ==| B | | C |
| | -- 2 - | -2- | - 2 -> | |
| | -- 3 - | -3- | - 3 -> | |
| |========| | | |
+-----+ +-----+ +-----+
10.0.0.1 10.0.0.2 10.0.0.3
- nativ conexiune ssh folosind gazda de salt „nativă”.
ssh oferă suport „nativ” pentru acest tip de conexiune folosind -J <destinație> parametru. Pentru specificarea destinaţie se recomandă utilizarea fișierului config (~./ssh/config).
Exemplul de cod ar fi (conexiunea exterioară este „transparentă”)
(1) ssh -J 10.0.0.2 10.0.0.3
+-----+ +-----+ +-----+
| A |========| B | | C |
| | -- 1 - | -1- | - 1 -> | |
| |========| | | |
+-----+ +-----+ +-----+
10.0.0.1 10.0.0.2 10.0.0.3