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

  1. ssh user@serverssh -f -D 9051 -- sleep 10 (va attendre 10 secondes qu’une connexion arrive, -f met la commande en background)
  2. curl --proxy socks4://localhost:9051 https://ipinfo.io
  3. 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 de PREROUTING et le NAT en v4
Catégories : News

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *