Astuces intéressantes et astuces SSH

Quelques conseils sur l'utilisation efficace de SSH. Voyons comment:

  • Utiliser l'authentification Ă  deux facteurs pour les connexions SSH
  • il est sĂ»r d'utiliser le «transfert de clé» (transfert d'agent);
  • quitter une session SSH bloquĂ©e;
  • laissez le terminal ouvert lorsque vous quittez ou vous dĂ©connectez;
  • Partagez le terminal distant avec un ami (sans Zoom!).

image

Authentification multifacteur SSH


Il existe cinq façons d'ajouter un deuxiÚme facteur d'authentification dans SSH:

  1. OpenSSH ( ).

    2020 OpenSSH FIDO U2F (Universal Second Factor). , .

    , 8.2 . ssh -V, nc [servername] 22.

    — ecdsa-sk ed25519-sk ( ). $ 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. , SSH-, . Yubikey U2F+SSH with PIV/PKCS11. , FIDO U2F. , .
  3. ssh- yubikey-agent. Filippo Valsorda SSH- Yubikeys. .
  4. Touch ID sekey. Sekey — SSH- , secure enclave MacOS Touch ID.
  5. Single Sign On SSH. . Single Sign On SSH , , .


(agent forwarding)


Le transfert d'une clĂ© dans SSH permet Ă  l'hĂŽte distant d'accĂ©der Ă  votre agent SSH local. Lorsque votre client SSH utilise le transfert de clĂ© (gĂ©nĂ©ralement activĂ© par l'option ssh -A), il y a 2 canaux dans la connexion - votre session interactive et le canal de transfert de clĂ©. L'agent SSH local crĂ©e un socket IPC qui se connecte Ă  l'hĂŽte distant via ce canal. C'est dangereux car Un utilisateur disposant de privilĂšges root sur un hĂŽte distant a accĂšs Ă  votre agent SSH local et peut potentiellement l'utiliser pour accĂ©der aux ressources rĂ©seau en votre nom. Avec l'agent SSH standard fourni avec OpenSSH, vous ne savez jamais ce qui s'est passĂ©. Mais si vous utilisez une clĂ© U2F (ou Sekey ), vous pouvez arrĂȘter toute tentative d'utilisation de votre agent SSH.

MĂȘme avec cette limitation, l'utilisation pĂ©riodique du transfert de clĂ© est parfaitement acceptable. N'utilisez pas cette mĂ©thode pour toutes vos connexions. Utilisez uniquement si vous ĂȘtes sĂ»r de son besoin dans des situations spĂ©cifiques.

Quitter une session SSH suspendue


Les sessions SSH se bloquent souvent en raison de pannes de réseau, d'une perte de contrÎle par un programme exécutable ou l'une des séquences de contrÎle de terminal qui bloquent l'entrée au clavier.

Voici quelques façons de sortir d'une session bloquée:

  1. Sortie automatique en cas de rupture du rĂ©seau. Dans votre configuration SSH, .ssh/configvous devez ajouter: il vĂ©rifiera la connexion en envoyant des requĂȘtes d'Ă©cho Ă  l'hĂŽte distant toutes les secondes. Si plus de ces demandes restent sans rĂ©ponse, SSH fermera la connexion.

    ServerAliveInterval 5
    ServerAliveCountMax 1


    sshServerAliveIntervalServerAliveCountMax
  2. . ssh ~ . ~. ( ).

    ~? , . , ~ , .

?Quand Internet a Ă©tĂ© inventĂ©, les ordinateurs n'Ă©taient pas particuliĂšrement mobiles. Lorsque vous travaillez sur un ordinateur portable et basculez entre les rĂ©seaux WiFi IPv4, votre adresse IP change. Étant donnĂ© que SSH est basĂ© sur une connexion TCP et que les connexions TCP dĂ©pendent de points de connexion avec des adresses IP fixes, chaque fois que vous vous connectez Ă  un autre rĂ©seau, votre connexion SSH est perdue. Lorsque votre adresse IP change, il faut un certain temps avant que la pile rĂ©seau dĂ©tecte que la connexion est perdue. Une connexion TCP n'implique pas un arrĂȘt rapide de l'une des parties en cas de problĂšmes de rĂ©seau, elle essaiera donc de rĂ©essayer d'envoyer les donnĂ©es pendant un certain temps. Dans votre terminal, la session sera bloquĂ©e. IPv6 ajoute des fonctionnalitĂ©s qui permettent aux appareils de conserver leur adresse IP lors de la commutation entre les rĂ©seaux.Donc, un jour, cela cessera d'ĂȘtre un problĂšme.

Comment laisser un terminal ouvert sur un hĂŽte distant


Il existe deux options pour enregistrer une session lorsque vous basculez entre les réseaux ou souhaitez vous déconnecter pendant un certain temps:

  1. Utilisez Mosh ou Eternal Terminal . Si vous avez vraiment besoin d'une connexion qui ne plante pas , mĂȘme si vous changez de rĂ©seau, utilisez le shell Mosh - mobile. Mosh est un shell sĂ©curisĂ© qui utilise SSH pour initialiser une session (prise de contact), aprĂšs quoi il bascule sur son propre canal cryptĂ©. Ce canal est trĂšs stable. Il peut gĂ©rer diverses situations, notamment les dĂ©connexions d'Internet, la modification de l'adresse IP de votre ordinateur portable, les retards importants lors de la transmission sur le rĂ©seau, etc. GrĂące Ă  la magie d'UDP et au protocole de synchronisation utilisĂ© par Mosh.

    Mosh , 60000–61000 UDP . mosh user@server .

    Mosh , SSH, - . , . SSH , , Mosh .
  2. tmux. , , tmux. SSH- , tmux attach, tmux. — , macOS .

    tmux Byobu — , . Byobu Ubuntu macOS Homebrew.



Lorsque vous résolvez un problÚme complexe avec des serveurs, je voudrais partager une session SSH avec quelqu'un d'autre qui se trouve dans un autre endroit. tmux est le meilleur outil de terminal de partage.
Vous devez donc procéder comme suit:

  1. Assurez-vous qu'il est tmuxinstallĂ© sur votre serveur dans DMZ (ou Ă  l'endroit oĂč vous souhaitez vous connecter).
  2. Vous devez tous les deux vous connecter au serveur via SSH en utilisant le mĂȘme compte .
  3. L'un de vous doit exécuter tmuxpour créer une tmuxsession.
  4. Un autre doit exécuter la commande tmux attach.
  5. Voila! Vous avez partagé le terminal.

Si vous avez besoin d'un réglage plus fin des sessions multi-utilisateurs, utilisez tmate, ce fork tmux, qui vous permet de rendre les sessions partagées encore plus faciles.

Traduit par Andrey Zinchenko, chef du département Rexoft Analytics

All Articles