Lad os antage et scenarie med følgende maskiner forbundet til et netværk (f.eks. Internettet):
- local - Den computer, man sidder ved.
- remote1 - En remote host man gerne vil tilgå med SSH.
- remote2 - En remote host man gerne vil tilgå med SSH.
- public - En remote host som kan tilgås via SSH fra alle de andre maskiner.
Maskinerne public, remote1 og remote2 skal have en SSH-server installeret for at kunne acceptere SSH-connections, og dette kan (afhængigt af din Linux-distribution) evt. gøres vha.:
sudo apt-get install openssh-server
Desuden skal du også sikre dig at SSH-serveren kører, f.eks. med:
sudo systemctl start sshd
Derefter kan følgende script lægges på remote1 og remote2:
#!/bin/bash PORT="42000" PUBLIC="username@46.101.227.210" ssh -R $PORT:localhost:22 $PUBLIC
Sørg for at sætte to forskellige portnumre for remote1 og remote2, lad os sige port 42001 for remote1 og 42002 for remote2. Ret også "PUBLIC" så den peger på public-maskinen med korrekt SSH-login.
Når du kører scriptet på remote1 og remote2 skulle de oprette reverse SSH tunnels til public, så hvis du logger ind på public med SSH skulle du kunne se to aktive sockets med LISTEN status når du kører følgende kommando:
sudo netstat -tnpa | grep ssh
Du kan nu forbinde til remote1 eller remote2 fra public således:
# Connect to remote1 ssh localhost -p 42001 # Or connect to remote2 instead ssh localhost -p 42002