Cet article regroupe nos meilleures astuces pour utiliser SSH de maniĂšre plus efficace. Vous apprendrez comment :
- Ajouter un second facteur Ă la connexion SSH
- Utiliser en toute sécurité le transfert d'agent
- Sortir d'une session SSH gelée
- Garder un terminal ouvert en permanence
- Partager une session terminal Ă distance avec un ami (sans Zoom !)
Ajout d'un second facteur Ă votre SSH
Cinq mĂ©thodes diffĂ©rentes peuvent ĂȘtre utilisĂ©es pour ajouter un second facteur d'authentification Ă vos connexions SSH :
- Mettez à jour votre OpenSSH et utilisez la clé de chiffrement. En février 2020, OpenSSH a ajouté le support des clés de chiffrement FIDO U2F (Universal Second Factor). C'est une nouvelle fonctionnalité excellente, mais il y a un inconvénient : seuls les clients et serveurs qui ont été mis à jour vers la version OpenSSH 8.2 et supérieure pourront utiliser ces clés de chiffrement, car la mise à jour de février introduit de nouveaux types de clés. Vous pouvez vérifier la version du client SSH avec la commande
ssh âVet la version du serveur avec la commandenc [servername] 22
La version de fĂ©vrier a ajoutĂ© deux nouveaux types de clĂ©s â ecdsa-sk et ed25519-sk (avec les certificats correspondants). Pour gĂ©nĂ©rer un fichier de clĂ©, il suffit d'insĂ©rer votre clĂ© de chiffrement et d'exĂ©cuter la commande :$ ssh-keygen -t ecdsa-sk -f ~\/ .ssh\/id_ecdsa_skCela crĂ©era des clĂ©s publique et secrĂšte et les liera Ă votre appareil U2F. La tĂąche de la clĂ© secrĂšte sur l'appareil U2F est de dĂ©chiffrer le descripteur secret de la clĂ© sur le disque lorsque la clĂ© de chiffrement est activĂ©e.
De plus, en tant que second facteur, vous pouvez fournir une phrase de code pour vos clés.
La clé résidente est un autre type de génération de clé -sk- pris en charge par OpenSSH. Avec cette approche, le descripteur est stocké sur l'appareil U2F et vous permet de l'avoir lors de l'activation de la clé de chiffrement si nécessaire. Créez une clé résidente avec la commande :
$ ssh-keygen -t ecdsa-sk -O resident -f ~\/ .ssh\/id_ecdsa_skEnsuite, pour renvoyer le descripteur en mémoire sur le nouvel appareil, insérez votre clé de chiffrement et exécutez la commande :
$ ssh-add -KLors de la connexion à l'hÎte, vous devrez toujours activer la clé de chiffrement.
- Utilisez PIV+PKCS11 et Yubikey. Pour vous connecter Ă des appareils avec des versions antĂ©rieures de SSHD Ă l'aide d'une clĂ© de chiffrement, une autre approche sera nĂ©cessaire. Yubico propose un guide sur l'utilisation de U2F+SSH avec PIV\/PKCS11 (en anglais). Ce n'est pas la mĂȘme chose que FIDO U2F, et bien que la mĂ©thode fonctionne, elle demande beaucoup d'efforts pour comprendre la magie qui l'anime.
- Appliquer un agent SSH yubikey-agent personnalisé. Filippo Valserda a écrit un agent SSH pour Yubikeys. Il est entiÚrement nouveau et contient un minimum de fonctionnalités.
- Utiliser Touch ID et sekey. Sekey est un agent SSH open source qui stocke les clés secrÚtes dans un enclave sécurisé sur Mac et permet d'utiliser Touch ID pour l'accÚs.
- Utiliser Single Sign On SSH. J'ai Ă©crit un tutoriel pour aider Ă configurer cette mĂ©thode (en anglais). Un des avantages du single sign on SSH est la possibilitĂ© de mettre en Ćuvre les politiques de sĂ©curitĂ© de votre fournisseur d'identitĂ©, y compris le support de l'authentification multifacteur (MFA).
Utilisation sécurisée de l'agent forwarding
Dans le forwarding d'agent SSH, un hĂŽte distant peut accĂ©der Ă l'agent SSH de votre appareil local. Lorsque vous utilisez SSH avec le forwarding d'agent activĂ© (gĂ©nĂ©ralement via ssh -A), la connexion aura deux canaux : votre session interactive et un canal pour le forwarding d'agent. Ă travers ce canal, un socket Unix créé par votre agent SSH local se connecte Ă l'hĂŽte distant. C'est une mĂ©thode risquĂ©e, car un utilisateur avec des droits root sur l'appareil distant peut accĂ©der Ă votre agent SSH local et potentiellement se faire passer pour vous sur le rĂ©seau. En utilisant l'agent SSH standard de la suite Open SSH, vous ne rĂ©aliserez mĂȘme pas que cela s'est produit. Avoir une clĂ© U2F (ou Sekey) vous aidera Ă bloquer efficacement toute tentative d'accĂšs Ă votre agent SSH de l'extĂ©rieur.
MĂȘme avec cette mesure de prĂ©caution, il est judicieux d'utiliser le forwarding d'agent aussi rarement que possible. Ne l'utilisez pas pour chaque session â utilisez le forwarding d'agent uniquement si vous ĂȘtes certain de sa nĂ©cessitĂ© pour la session en cours.
Sortie d'une session gelée
Une interruption de réseau, un comportement incontrÎlé des programmes ou une séquence de commande qui bloque l'entrée au clavier sont tous des raisons possibles d'une rupture de session SSH.
Vous pouvez mettre fin à une session gelée de plusieurs maniÚres :
- Sortir automatiquement lors d'une interruption de réseau. Dans votre .ssh/config, vous devez ajouter ce qui suit :
ServerAliveInterval 5 ServerAliveCountMax 1ssh enverra un écho à l'hÎte distant toutes les ServerAliveInterval secondes pour vérifier la connexion. Si plus de ServerAliveCountMax échos ne reçoivent pas de réponse, ssh terminera la connexion par timeout et sortira de la session.
- Sortir de la session. SSH utilise par dĂ©faut le symbole ~ (tilde) comme commande de contrĂŽle. La commande ~. ferme la connexion ouverte et vous ramĂšne au terminal. (Les sĂ©quences de contrĂŽle ne peuvent ĂȘtre saisies qu'Ă partir d'une nouvelle ligne.) La commande ~? affichera la liste complĂšte des commandes disponibles dans cette session. Notez que pour taper le symbole ~ sur les claviers internationaux, il peut ĂȘtre nĂ©cessaire d'appuyer deux fois sur la touche ~.
Pourquoi des sessions plantĂ©es se produisent-elles ? Ă l'Ă©poque de la crĂ©ation d'Internet, les ordinateurs ne bougeaient que rarement. Lorsque vous utilisez des ordinateurs portables et que vous basculez entre plusieurs rĂ©seaux WiFi IPv4, votre adresse IP change. Puisque SSH repose sur des connexions TCP, et que celles-ci dĂ©pendent d'un point de terminaison avec une adresse IP stable, chaque fois que vous changez de rĂ©seau, vos connexions SSH perdent le descripteur de socket et se perdent effectivement elles-mĂȘmes. Lorsque votre adresse IP change, votre pile rĂ©seau met du temps Ă dĂ©tecter la perte du descripteur. En cas de perturbations rĂ©seau, nous ne voulons pas qu'un des nĆuds de la connexion TCP la rompe trop tĂŽt. Ainsi, le protocole essaiera de renvoyer les donnĂ©es plusieurs fois avant d'abandonner finalement. Pendant ce temps, dans votre terminal, la session paraĂźtra plantĂ©e. IPv6 ajoute plusieurs fonctionnalitĂ©s liĂ©es Ă la mobilitĂ© qui permettent Ă l'appareil de conserver son adresse domestique lors du changement de rĂ©seau. Peut-ĂȘtre qu'un jour, cela ne sera plus un si grand problĂšme.
Comment garder un terminal permanent ouvert sur un nĆud distant
Il existe deux approches différentes pour maintenir une connexion lors du passage entre différents réseaux ou si vous souhaitez vous déconnecter temporairement.
1. Utiliser ou
Si vous avez vraiment besoin d'une connexion qui ne se dĂ©connecte pas, mĂȘme lorsque vous changez de rĂ©seau, utilisez le shell mobile Mosh. C'est un shell sĂ©curisĂ© qui utilise d'abord une poignĂ©e de main SSH, puis bascule sur son propre canal chiffrĂ© pendant toute la durĂ©e de la session. Mosh crĂ©e ainsi un canal distinct, trĂšs rĂ©sistant et sĂ©curisĂ©, capable de supporter Ă la fois les interruptions Internet, le changement d'adresse IP de votre ordinateur portable, des coupures rĂ©seau importantes, et bien plus encore, grĂące Ă la magie des connexions UDP et au protocole de synchronisation appliquĂ© par Mosh.
Pour utiliser Mosh, vous devrez l'installer Ă la fois sur le client et sur le serveur, et ouvrir les ports 60000-61000 pour le trafic UDP sans connexion vers votre hĂŽte distant. Ensuite, il suffira d'utiliser mosh user@server.
Mosh fonctionne au niveau des Ă©crans et des frappes, ce qui lui confĂšre plusieurs avantages par rapport Ă la transmission d'un flux binaire standard d'entrĂ©e et de sortie entre le client et le serveur SSH. Si nous avons besoin de synchroniser uniquement les Ă©crans et les frappes, la restauration d'une connexion interrompue devient beaucoup plus simple. Alors qu'SSH va mettre en mĂ©moire tampon et envoyer tout ce qui s'est passĂ©, Mosh ne doit mettre en mĂ©moire tampon que les frappes et synchroniser la derniĂšre image de la fenĂȘtre de terminal avec le client.
2. Utiliser tmux
Si vous souhaitez « venir et partir Ă votre guise » en gardant une session terminal sur un nĆud distant, utilisez le tmux. J'adore tmux et je l'utilise tout le temps. Si votre connexion SSH est interrompue, il suffit de se reconnecter et de taper tmux attach. De plus, il offre de merveilleuses fonctionnalitĂ©s telles que les onglets et les panneaux intra-terminal, similaires aux onglets dans le terminal iOS, et la possibilitĂ© de partager des terminaux avec d'autres.
Certains aiment embellir leur tmux avec Byobu, un package qui amĂ©liore considĂ©rablement l'ergonomie de tmux et y ajoute de nombreux raccourcis. Byobu est livrĂ© avec Ubuntu et peut ĂȘtre facilement installĂ© sur Mac via Homebrew.
Partage d'une session terminal distante avec un ami
Parfois, lors du dĂ©bogage de problĂšmes complexes sur vos serveurs, vous pouvez ressentir le besoin de partager une session SSH avec quelqu'un qui n'est pas dans la mĂȘme piĂšce que vous. tmux est parfait pour cette tĂąche ! Il suffit de suivre quelques Ă©tapes :
- Assurez-vous que tmux est installĂ© sur votre nĆud bastion ou sur tout autre serveur avec lequel vous allez travailler.
- Vous devrez tous les deux vous connecter par SSH Ă l'appareil en utilisant un seul compte.
- L'un de vous doit lancer tmux pour commencer une session tmux.
- L'autre doit exécuter tmux attach
- Et voilà ! Vous avez un terminal partagé.
Si vous souhaitez des sessions tmux multi-utilisateurs plus avancées, essayez tmate, qui est un fork de tmux simplifiant considérablement les sessions de terminal partagées.
Source : habr.com
