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-keygen
Par 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 dupond
permet de taper
$ ssh ex
au lieu de
$ ssh -P22 dupond@ssh.example.org
Chaî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.proxy
Note : “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 B
Redirection locale (local)
Les paquets arrivant sur bindport
de A sont transmis à B sur hostport
:
$ ssh -L bindport::hostport B
Redirection distante (rremote)
Les paquets arrivant sur bindport
de B sont transmis à A sur hostport
:
$ ssh -R bindport::hostport B
Cas 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 = true
Connexion X distante
Dans un terminal, lancer le serveur X localement :
X :10.0
Dans 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