Skip to content

Latest commit

 

History

History
189 lines (111 loc) · 4.02 KB

note_2016-03-06_20-12-30_ssh-tunnel.md

File metadata and controls

189 lines (111 loc) · 4.02 KB

Utiliser des tunnels SSH

Types de tunnels

-D

Tunnel Socks 5 dynamique. Spécifier le port local, le port distant sera dynamique en fonctions des applications utilisées par le tunnel.

-L

Ouvrir un port local pointant vers un port distant.

Exemple:

$ ssh -L 2000:localhost:22 user@remote-host

2000: 	port local
22: 	port distant

-R

Ouvrir un port distant pointant vers un port distant.

Exemple:

$ ssh -R 2000:localhost:22 user@remote-host

2000: 	port distant
22: 	port local

Avec un navigateur et un SOCKS

Remarque: les ports 80 et 443 sont souvent moins restreints.

Paramétrer le serveur OpenSSH pour qu'il écoute 443

$ vim /etc/ssh/sshd_config
# Ajouter:
Port 443

Lancer une connexion:

$ ssh -D portLocal user@server -p portDistantSsh
$ ssh -D 1234 remipassmoilesel@serveur -p 443

Paramétrer Firefox

Préférences / Avancé / Réseaux / Connexion > Paramètres
Configuration manuelle du proxy
Hote SOCKS: 127.0.0.1:1234

Ou avec Chromium:

$ chromium-browser --proxy-server="socks5://localhost:1234"

Source: http://www.bidouille.org/prog/sshproxy

Pour utiliser Corkscrew et wrapper le SSH dans du HTTPS: https://memo-linux.com/ssh-acces-travail-maison/

Avec IRSSI

Ouvrir un tunnel SSH:

    $ ssh -L 6667:irc_server:6667 user@remote.host.com

Ouvrir IRSSI:

    $ irssi -c localhost

Source: https://ninjaverification.wordpress.com/2008/04/11/irssi-through-an-ssh-tunnel/

Avec SSH

$ ssh -L 2000:localhost:22 user@remote-host

2000: port local
22: port distant

$ ssh -p 2000 localhost

Utiliser autossh

Exemples:

# Faire suivre un port local (5669) sur une machine distante (6669)
$ autossh -f -N -M $AUTOSSH_MPORT_LOCAL -R 6669:localhost:5669 ssh-tunnel.poller

# Faire suivre un port distant (22) sur un port local (1022)
$ autossh -f -N -M $AUTOSSH_MPORT_REMOTE -L 1022:localhost:22 ssh-tunnel.poller

Détail:

  -M 2000 port de monitoring, utilisé pour détecter les problèmes de connexion et reconnecter
  Les ports N et N+1 doivent être libres.

Exemple de service systemd (mieux vaut utiliser un script séparer pour les variables d'env):

[Unit]
Description=Keeps a tunnel to 'remote.example.com' open
After=network.target

[Service]
User=autossh
# -p [PORT]
# -l [user]
# -M 0 --> no monitoring
# -N Just open the connection and do nothing (not interactive)
# LOCALPORT:IP_ON_EXAMPLE_COM:PORT_ON_EXAMPLE_COM
ExecStart=/usr/bin/autossh -M 0 -N -q -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -p 22 -l autossh remote.example.com -L 7474:127.0.0.1:7474 -i /home/autossh/.ssh/id_rsa

[Install]
WantedBy=multi-user.target

Utiliser un rebond

Avec l'option J, pour se connecter à second-server sur le port 1025 via first-server sur le port 22:

$ ssh -v -J first-server:22 -p 1025 second-server

Avec l'option -W:

Host second-server
    ProxyCommand ssh -W second-server:port first-server
    IdentityFile ~/.ssh/id_rsa.pub

Avec nc:

$ vim ~/.ssh/config

Host ssh-tunnel.bastion.10.0.0.100
    User user
    IdentityFile ~/.ssh/id_rsa
    HostName 10.0.0.100
    Port 22

Host ssh-tunnel.poller.172.16.0.50
    User centreon
    IdentityFile ~/.ssh/id_rsa
    Port 22
    HostKeyAlias 172.16.0.50
    ProxyCommand ssh ssh-tunnel.bastion.10.0.0.100 nc -q0 172.16.0.50 22

Host poller-preprod-2.ssh
    User centreon
    Port 1101
    IdentityFile ~/.ssh/id_rsa

Publier un port déporté

Modifier la configuration SSH du serveur cible, pour autoriser la publication de port sur l'interface spécifiée:

$ vim /etc/ssh/sshd_config

GatewayPorts clientspecified

Ensuite, pour publier le port 80 sur 8888 avec une addresse interne:

$ autossh ... -R 172.16.0.1:8888:127.0.0.1:80

Options -X pour forward graphique

Ouvrir une session ssh:

$ ssh -X remote 

Ensuite ouvrir une application sur l'hôte remote (être un peu patient):

$ idea &

L'option -C permet d'améliorer les performances en compressant.

Utiliser xpra

$ sudo apt install xpra
$ xpra start :20

... TODO ...