Guide SSH
2014-09-25
Ce document est à l’oridine une série d’articles publiés entre le 28 juin 2011 et le 18 juin 2012.
Ce guide ne traite que les cas les plus simples et les plus fréquents. Pour d’autres techniques, consultez cet article (en).
Gestion des clés
Principe
Une méthode d’authentification alternative au mot de passe est l’utilisation d’une clé SSH. Une clé SSH, ou clé RSA, identifie un client et consiste en deux fichiers : la partie publique (.pub) et la partie privée. La première est envoyée au serveur SSH pour lui indiquer quel clé SSH autoriser sur quel compte ; la deuxième reste sur l’ordinateur du client.
Créer une clé SSH
Pour générer ces deux fichiers, utiliser la commande (avec les choix par défaut) :
$ ssh-keygenPar défaut, la partie publique est id_rsa.pub et la partie privée id_rsa, tous deux dans le répertoire .ssh.
Autoriser un client sur un serveur
Pour autoriser le client utilisant id_rsa sur le serveur, les informations de id_rsa.pub doivent être envoyée au serveur. Le plus simple, depuis le client :
$ ssh-copy-id user@host
Password:À la connexion suivante, aucun mot de passe ne devrait être demandé.
Méthode alternative
Il est aussi possible d’ajouter le contenu de id_rsa.pub (une ligne) à .ssh/authorized_hosts (créer s’il n’existe pas) sur l’hôte. Cette méthode est utile pour autoriser un utilisateur par mail, formulaire Web, ou autre.
Abbréviations
Alias
Ajouter les lignes suivantes à .ssh/config :
Host ex
    Hostname ssh.example.org
    Port     22
    User     dupondpermet de taper
$ ssh exau lieu de
$ ssh -P22 dupond@ssh.example.orgChaînage
Pour accéder à des machines en SSH par le biais d’une connexion SSH, ajouter à .ssh/config :
Host *.proxy
    Port 22
    User dupond
    ProxyCommand ssh dupont@ssh.example.org "tcpconnect `basename %h .proxy` %p"Cette méthode est utile quand seul le serveur SSH est visible depuis l’extérieur. Pour accéder à l’ordinateur mymachine sur le réseau local, il suffit alors de taper :
$ ssh mymachine.proxyNote : “dupond” est l’utilisateur sur la machine finale, “dupont” l’utilisateur sur le proxy (généralement le même nom d’utilisateur) ; pour remplacer le suffixe “.proxy”, il faut penser à le modifier dans la commande basename dans la dernière ligne
Redirection de ports
SSH permet de rediriger les données arrivant sur un port de trois manières différentes :
Redirection arbitraire (dynamic)
Pour créer un serveur SOCKS sur le port bindport A transmettant les connexion (arrivant sur A), à travers la connexion ssh, vers B :
$ ssh -D bindport BRedirection locale (local)
Les paquets arrivant sur bindport de A sont transmis à B sur hostport :
$ ssh -L bindport::hostport BRedirection distante (rremote)
Les paquets arrivant sur bindport de B sont transmis à A sur hostport :
$ ssh -R bindport::hostport BCas spécifiques
DNS sous Firefox
Pour que Firefox effectue la résolution DNS à travers le proxy SOCKS, il faut changer une option dans about:config.
network.proxy.socks_remote_dns = trueConnexion X distante
Dans un terminal, lancer le serveur X localement :
X :10.0Dans un autre, lancer le gestionnaire de session à distance et l’afficher sur l’instance locale de X.
DISPLAY=:10.0 ssh -Y user@host xfce4-session