Table of Contents

SSH, bien plus qu'un shell distant

Midi de la bidouille
3 février 2015
Guillaume Cassonnet - INRIA Bordeaux Sud-Ouest
guillaume.cassonnet@inria.fr

1 Tunnels SSH

1.1 Redirection locale (LocalForward)

Redirection d'un port TCP de la machine "locale" (client SSH) vers un port TCP accessible par la machine "distante" (serveur SSH).

1.1.1 Ligne de commande : option -L

ssh madestination -L 12345:192.168.1.10:8000

  1. Détail des paramètres

    12345 = port TCP de création du socket sur la machine "locale".
    192.168.1.10:8000 = machine (nom DNS ou adresse IP) et port TCP cible. Il doit être accessible par la machine "distante".

1.1.2 .ssh/config : LocalForward

# Exemple de configuration
Host madestination-monservice
    HostName madestination
    LocalForward 12345 192.168.1.10:8000

1.1.3 On peut maintenant se connecter à localhost:12345 de la machine "locale"

1.2 Redirection distante (RemoteForward)

Redirection d'un port TCP de la machine "distante" (serveur SSH) vers un port TCP accessible par la machine "locale" (client SSH).

1.2.1 Ligne de commande : option -R

ssh madestination -R 23456:172.17.0.5:80

  1. Détail des paramètres :

    23456 = port TCP de création du socket sur la machine "distante".
    172.17.0.5:80 = machine (nom DNS ou adresse IP) et port TCP cible. Il doit être accessible par la machine "locale".

1.2.2 .shh/config : RemoteForward

# Exemple de configuration
Host madestination-unautreservice
    HostName madestination
    LocalForward 23456 172.17.0.5:80

1.2.3 On peut maintenant se connecter à localhost:23456 de la machine "distante"

1.3 Redirection dynamique (DynamicForward)

Création d'un "proxy SOCKS" permettant de rediriger le traffic des applications compatibles vers la machine "distante" (serveur SSH).

1.3.1 Ligne de commande : option -D

ssh madestination -D 34567

  1. Détail des paramètres :

    34567 = port TCP de création du socket sur la machine "locale".

1.3.2 .ssh/config : DynamicForward

# Exemple de configuration
Host madestination-socks
    HostName madestination
    DynamicForward 34567

1.3.3 On peut maintenant configurer les applications compatibles SOCKS pour utiliser localhost:34567 de la machine "locale".

2 Connexion à distance

2.1 Rebond (ProxyCommand)

Permet de configurer un rebond SSH dans le fichier de configuration pour accéder à une machine distante en une seule commande.

2.1.1 .ssh/config

# Exemple de configuration
# Dans cet exemple, madestination est accessible par rebond sur machineaccessible
Host madestination-inaccessible
    HostName madestination
    Port 22
    ProxyCommand ssh machineaccessible nc %h %p

2.1.2 On peut maintenant se connecter à madestination en utilisant "ssh madestination-inaccessible"

3 Transfert de fichiers avec SSH

3.1 SCP

SCP est similaire à "cp", par SSH. Il est cependant limité.

3.1.1 Ligne de commande

# Générique
scp source destination
# Envoi de fichier
scp fichier madestination:chemin
# Récupération de fichier
scp madestination:chemin .

  1. Détail des paramètres :

    chemin = chemin relatif (au ~) ou absolu du fichier ou dossier

3.1.2 scp utilise le fichier de configuration .ssh/config

3.2 RSYNC

Le puissant outil de synchronisation RSYNC est compatible SSH.

3.2.1 Ligne de commande

# Générique
rsync -av source destination
# Synchronisation depuis une machine "distante"
rsync -av madestination:chemin cheminlocal
# Synchronisation vers une machine "distante"
rsync -av cheminlocal madestination:chemin

3.2.2 rsync utilise le fichier de configuration .ssh/config

3.3 SSHFS (FUSE)

SSHFS est un système de fichier en espace utilisateur (FUSE) et permet l'arborescence de la machine "distante" sur la machine "locale".

3.3.1 Ligne de commande

# Effectuer le montage
sshfs madestination:chemin pointdemontage
# Démontage
fusermount -u pointdemontage

3.3.2 Dans /etc/fstab

# Options à personnaliser (options longues dans man sshfs) sshfs#utilisateur@madestination:/chemin /pointdemontage fuse defaults,user,users 0 0 #+ENDVERSE

3.3.3 sshfs utilise le fichier de configuration .ssh/config

4 Pour aller plus loin

4.1 Aide à la ligne de commande : man ssh

4.2 Aide à l'écriture du fichier de configuration .ssh/config : man sshconfig

4.3 Aide des autres commandes utilisées :

4.3.1 man scp

4.3.2 man rsync

4.3.3 man sshfs

Created: 2018-07-19 og. 15:25

Validate