Optimiser la connexion SSH à des serveurs distants

Optimiser la connexion SSH à des serveurs distants

Imagem de capa

image disponible sur WikiCommons par Pigr8 sous licence BSD

Le télétravail est une belle invention. Vous pouvez travailler de chez vous, commencer plus tôt et terminer plus tard tout en étant moins fatigué. Vous disposez d’une certaine souplesse, après vous être mis d’accord avec votre responsable, pour vous absenter une petite heure pour aller conduite la voiture au garage par exemple. Vous évitez les transports en commun, très aléatoire en région parisienne, ou les 10 petits kilomètres en voiture à une vitesse moyenne de… 20km/h. Bref, c’est que du bonheur…

Vous lancez votre VPN et vous vous connectez en SSH sur votre poste. De là, vous pouvez lancer des applications graphiques qui s’exécutent sur votre poste au bureau mais s’affichent sur votre ordinateur familial. Vous disposez d’une connexion supra-giga-ultra-méga-très-très-haut débit, grâce à la fibre optique, c’est à dire du 100MBits/s (!!! vivement le supra-giga-ultra-méga-très-très-haut ++ débit) en download et du 50MBits/s en upload. Petit veinard! En dehors du fait qu’on se moque de nous sur le côté très-très-très-haut débit, on constate quand même que ça reste assez… lent. Il y a une certaine latence entre la frappe d’une touche sur le clavier et le moment où le caractère s’affiche. De plus, Firefox et LibreOffice mettent un certain temps à s’afficher lors de nombreux « Alt-Tab ». Ceci est très gênant. D’autant plus gênant lorsqu’on enchaîne deux connexions SSH dans deux tunnels OpenVPN distincts pour lancer un Firefox à l’autre bout afin d’utiliser l’outil d’administration graphique du SAN ou de l’outil de virtualisation. Il peut se passer plusieurs dizaines de secondes entre le changement de fenêtre et le rafraîchissement de l’affichage de cette fenêtre. Comment « accélérer » la connexion SSH? Comment améliorer le ressenti utilisateur?

Dans toute la suite j’utiliserai les termes « serveur (SSH) », « utilisateur » et « client (SSH) ». Ces termes sont utilisés avec les définitions suivantes :

Les fichiers de configuration SSH

Un petit rappel sur les fichiers de configuration SSH. En fait, il y en a quatre différents, à modifier selon le besoin :

Dans le cas qui concerne cet article, je souhaite optimiser la connexion :

Je vais donc modifier le fichier ~/.ssh/config :

Configuration du client SSH du poste utilisateur de ma maison

Le fichier à modifier est ~/.ssh/config. Le chemin complet est /home/cedric/.ssh/config. Voici les lignes de ce fichier :

Host 10.54.65.1
GSSAPIAuthentication no
GSSAPIKeyExchange no
GSSAPIRenewalForcesRekey no
Compression yes
CompressionLevel 9
ForwardX11 yes
ForwardX11Trusted yes

Regardons les lignes une par une :

Configuration du client SSH du poste utilisateur de mon bureau

Le fichier à modifier est ~/.ssh/config. Le chemin complet est /home/cedric/.ssh/config. Voici les lignes de ce fichier :

Host *.vpn
GSSAPIAuthentication no
GSSAPIKeyExchange no
GSSAPIRenewalForcesRekey no
Compression yes
CompressionLevel 9
ForwardX11 yes
ForwardX11Trusted no

Les modifications intéressantes sont :

Avec ses deux fichiers de configuration, je couvre presque tous mes cas. Mes connexions sont optimisées et je ressens beaucoup moins cette rage que j’avais auparavant, lorsque je suis contraint d’agir à distance, en urgence, sur un problème complexe et risqué et que « ça ralentit ».