OpenSSH : multiplexage des connexions

Si comme moi, vous vous connectez plusieurs fois sur un même serveur SSH (perso, plus j’ai de terms, plus je suis content), il existe une astuce pour éviter l’invite de mot de passe (le cas échéant) tout en gagnant en rapidité d’établissement.
OpenSSH peut en effet multiplexer plusieurs sessions - un shell, un envoi de fichier, une redirection de port est une session - dans un seul tunnel - une connexion réseau -. On évite donc de créer un tunnel supplémentaire, sa connexion associée, l’authentification, etc. Si un tunnel existe déjà, la session est alors directement ouverte et sans demande de mot de passe. Si vous utilisez OpenVPN, le principe est exactement le même : toutes les connexions réseaux sont multiplexées dans un seul tunnel.
Méthode hard
se connecter en mode master, en précisant un fichier socket pour nommer le tunnel et pouvoir le réutiliser par la suite :
bhuisgen:~ bhuisgen$ ssh user@host -M -S ~/.ssh/socket/tunnel
Le mot de passe est demandé (si non, votre clé SSH a été prise en compte, mais le temps d’établissement est plus rapide). Attention à ce que le répertoire ~/.ssh/socket existe bien au préalable.
- ensuite pour tout autre session, faire un slave avec le fichier socket du tunnel :
bhuisgen:~ bhuisgen$ ssh user@host -S ~/.ssh/socket/tunnel
Et là, c’est le drame … la session s’ouvre directement, sans demande de mot de passe. A noter que le tunnel SSH n’est pas détruit tant que toutes les sessions slave ne sont pas terminées.
Méthode simple
Tout est automatisé dans la configuration SSH :
bhuisgen:~ bhuisgen$ more ~/.ssh/config
Host=*
ControlMaster auto
ControlPath ~/.ssh/sockets/ssh-socket-%r-%h-%p
Le multiplexage est désormais transparent et on en revient aux options habituelles :
bhuisgen:~ bhuisgen$ ssh user@host
Ce qui est pas plus mal !