Accéder à un port distant via SSH
ssh -L $LOCAL_PORT:$TARGET_IP:$TARGET_PORT user@serverssh
$LOCAL_PORT
est le port qui sera ouvert localement qui pointera vers le port cible$TARGET_PORT
$TARGET_IP
ip de la cible doit être joingnable depuis le serveur ssh
Exemple
Accéder à un serveur MongoDB sur un serveur distant non exposé ou derrière un firewall
ssh -L 27018:serveurmongo:27017 user@serverssh
En local le serveur mongodb sera accessible via mongo localhost:27018
Accéder à un réseau distant via SSH (socks proxy)
ssh -D $SOCKS_LISTEN_PORT user@serverssh
* ouvre un server socks4 en local qui requètera depuis le serveur ssh
Exemple
ssh user@serverssh -f -D 9051 -- sleep 10
(va attendre 10 secondes qu’une connexion arrive,-f
met la commande en background)curl --proxy socks4://localhost:9051 https://ipinfo.io
chromium --proxy-server=socks4://localhost:9051
Vous pouvez aussi installer proxychains
et ajouter le port 9051
dans sa config /etc/proxychains.conf
puis utiliser comme ceci proxychains curl https://ipinfo.io
.
Rendre disponible un port local sur le serveur SSH
ssh -R $LISTEN_PORT:$TARGET_IP:$TARGET_PORT user@serverssh
* $LISTEN_PORT
port ouvert côté serveur pour l’écoute
* $TARGET_IP
cible relative au client ssh
* $TARGET_PORT
port cible a exposé
Exemple
Rendre disponible sont serveur web local sur un serveur disposant d’une ip public.
ssh -R 8080:localhost:80 user@serverssh
* serverssh écoutera sur le port 8080 et acheminera le traffic vers le port 80 de votre machine
Astuce pour exposer un port local sur un router dd-wrt
ssh -f -R $PUBLIC_IP:6666:localhost:80 myddwrtrouter 'iptables -I INPUT -p tcp -i $(nvram get wan_iface) --dport 6666 -j ACCEPT && sleep 20'
- J’ajoute
$PUBLIC_IP
pour que le port soit exposé directement sur l’interface public et pas avoir besoin de se faire chier avec la chain dePREROUTING
et le NAT en v4
2 commentaires
michel marcon (aka cmic) · 2 janvier 2021 à 10 h 04 min
Cool ton article.
Ce qui me rappelle cette excellente image qui explique (mieux ?). Trouvée sur stackexchange :
https://unix.stackexchange.com/questions/115897/whats-ssh-port-forwarding-and-whats-the-difference-between-ssh-local-and-remot
HugoPoi · 2 janvier 2021 à 11 h 35 min
Putain trop bien l’explication