SSH Little Tricks

Cet article a compilé nos meilleures pratiques pour une utilisation plus efficace de SSH. De là, vous apprendrez comment:

  • Ajouter un deuxiĂšme facteur Ă  la connexion SSH
  • Transfert d'agent sĂ»r
  • Se dĂ©connecter d'une session SSH
  • Garder le terminal permanent ouvert
  • Partagez une session de terminal distant avec un ami (sans Zoom!)

Ajouter un deuxiĂšme facteur Ă  votre SSH


Le deuxiĂšme facteur d'authentification peut ĂȘtre ajoutĂ© Ă  vos connexions SSH de cinq maniĂšres diffĂ©rentes:

  1. Mettez Ă  jour votre OpenSSH et utilisez la clĂ© de chiffrement. En fĂ©vrier 2020, la prise en charge des clĂ©s de chiffrement FIDO U2F (Universal Second Factor) a Ă©tĂ© ajoutĂ©e Ă  OpenSSH. C'est une excellente nouvelle fonctionnalitĂ©, mais il y a une nuance: seuls les clients et les serveurs qui ont mis Ă  niveau vers OpenSSH version 8.2 et supĂ©rieure pourront utiliser des clĂ©s de chiffrement, car la mise Ă  jour de fĂ©vrier leur introduit de nouveaux types de clĂ©s. Avec la commande, ssh –Vvous pouvez vĂ©rifier la version client de SSH et la version serveur avec la commandenc [servername] 22

    Deux nouveaux types de clés ont été ajoutés à la version de février - ecdsa-sk et ed25519-sk (avec les certificats correspondants). Pour générer un fichier de clé, insérez simplement votre clé de chiffrement et exécutez la commande:

    $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk

    U2F . U2F — .

    , .

    - OpenSSH -sk-. U2F . - :

    $ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk

    , , :

    $ ssh-add -K

    .
  2. PIV+PKCS11 Yubikey. SSHD . Yubico U2F+SSH PIV/PKCS11. FIDO U2F, , , .
  3. yubikey-agent ssh-. SSH Yubikeys. .
  4. Touch ID sekey. Sekey SSH , Mac’ Touch ID .
  5. Single Sign On SSH. . single sign on SSH — (MFA).

agent forwarding


Le transfert d'agent SHH permet Ă  un hĂŽte distant d'accĂ©der Ă  l'agent SSH de votre appareil local. Lorsque vous utilisez SSH avec le transfert d'agent activĂ© (gĂ©nĂ©ralement via ssh -A), il y aura deux canaux dans la connexion: votre session interactive et le canal de transfert d'agent. Par ce canal, le socket Unix crĂ©Ă© par votre agent SSH local se connecte Ă  l'hĂŽte distant. Il s'agit d'une mĂ©thode risquĂ©e, car un utilisateur disposant d'un accĂšs root sur un appareil distant peut accĂ©der Ă  votre agent SSH local et potentiellement vous emprunter l'identitĂ© sur le rĂ©seau. En utilisant l'agent SSH standard du kit Open SSH, vous ne savez mĂȘme pas que cela s'est produit. La possession d'une clĂ© U2F (ou Sekey) vous aidera Ă  bloquer efficacement toutes les tentatives d'utilisation de votre agent SSH de l'extĂ©rieur.

MĂȘme avec cette prĂ©caution, c'est une bonne idĂ©e d'utiliser le moins possible le transfert d'agent. Vous ne devez pas l'utiliser Ă  chaque session - utilisez le transfert d'agent uniquement lorsque vous ĂȘtes sĂ»r de sa nĂ©cessitĂ© pour la session en cours.

Quitter une session suspendue


L'interruption du réseau, le comportement incontrÎlé des programmes ou une séquence d'échappement qui bloque la saisie au clavier sont toutes des causes possibles de rupture d'une session SSH.

Il existe plusieurs façons de mettre fin à une session bloquée:

  1. Quittez automatiquement lorsque le réseau est interrompu. Dans votre .ssh / config, vous devez ajouter ce qui suit:

    ServerAliveInterval 5
    ServerAliveCountMax 1

    ssh enverra un écho à l'hÎte distant toutes les secondes ServerAliveInterval pour vérifier la connexion. Si plusieurs échos ServerAliveCountMax ne reçoivent pas de réponse, ssh mettra fin à la connexion dans le délai d'expiration et quittera la session.
  2. . ssh ~ () . ~. . ( .) ~? . , ~ , ~ .

? . IPv4 WiFi, IP- . SSH TCP , , , IP-, , SSH . IP-, . , TCP- . . , . IPv6 , . , .


Il existe deux approches différentes pour maintenir une connexion lors du basculement entre différents réseaux ou si vous souhaitez vous déconnecter pendant une courte période.

1. Utilisez Mosh ou Eternal Terminal

Si vous avez vraiment besoin d'une connexion qui ne disparaĂźt pas mĂȘme lorsque vous basculez entre les rĂ©seaux, utilisez le shell mobile Mosh. Il s'agit d'un shell sĂ©curisĂ© qui utilise d'abord une nĂ©gociation SSH, puis bascule sur son propre canal cryptĂ© pendant la durĂ©e de la session. Mosh crĂ©e donc un canal sĂ©parĂ©, trĂšs rĂ©sistant et sĂ©curisĂ©, capable de rĂ©sister aux interruptions Internet, de changer l'adresse IP de votre ordinateur portable, de graves pannes de rĂ©seau et bien plus encore, tout cela grĂące Ă  la magie des connexions UDP, ainsi que Protocole de synchronisation 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 UPD dĂ©connectĂ© vers votre hĂŽte distant. À l'avenir, il suffira d'utiliser pour la connexion mosh user@server.

Mosh fonctionne au niveau des Ă©crans et des frappes, ce qui lui donne un certain nombre d'avantages par rapport Ă  la transmission du flux binaire d'entrĂ©e et de sortie standard entre le client et le serveur SSH. Si nous devons synchroniser uniquement les Ă©crans et les frappes, la restauration d'une connexion interrompue devient plus facile plus tard. Alors que SSH mettra en mĂ©moire tampon et enverra tout ce qui s'est passĂ©, Mosh n'a besoin que de tamponner les frappes et de synchroniser la derniĂšre image de la fenĂȘtre du terminal avec le client.

2. Utilisez tmux

Si vous voulez «aller et venir quand vous le souhaitez» et conserver la session de terminal sur un hÎte distant, utilisez le multiplexeur de terminal tmux . J'adore tmux et je l'utilise constamment. Si votre connexion SSH est interrompue, alors juste pour vous reconnecter et entrez pour revenir à votre session tmux tmux attach. En outre, il a des fonctions merveilleuses telles que les onglets et les panneaux intra-terminaux, similaires aux onglets du terminal iOS, et la possibilité de partager des terminaux avec d'autres.

Certaines personnes aiment embellir leur tmux avec Byobu, un package qui améliore considérablement la convivialité de tmux et y ajoute de nombreux raccourcis clavier. Byobu est livré avec Ubuntu et est facile à installer sur un Mac via Homebrew.

Partager une session de terminal distant avec un ami


Parfois, lors du dĂ©bogage de problĂšmes complexes sur vos serveurs, vous souhaiterez peut-ĂȘtre partager une session SSH avec quelqu'un qui ne se trouve pas dans la mĂȘme piĂšce que vous. tmux est parfait pour une telle tĂąche! Il suffit de prendre quelques Ă©tapes:

  1. Assurez-vous que tmux est sur votre hĂŽte bastion ou sur un serveur avec lequel vous allez travailler.
  2. Vous devrez tous les deux vous connecter via SSH Ă  l'appareil Ă  l'aide d'un seul compte.
  3. L'un de vous doit démarrer tmux pour démarrer une session tmux.
  4. Un autre devrait exécuter tmux attach
  5. Voila! Vous avez un terminal commun.

Si vous voulez des sessions tmux multi-utilisateurs plus sophistiquées, essayez tmate, c'est un fork de tmux qui simplifie grandement les sessions terminales conjointes.

All Articles