Agence web » Actualités du digital » Comment automatiser les connexions SSH si vous devez utiliser un mot de passe – CloudSavvy IT

Comment automatiser les connexions SSH si vous devez utiliser un mot de passe – CloudSavvy IT

SSH ne dispose pas d’un moyen simple d’envoyer des mots de passe via une entrée standard, ce qui rend difficile l’automatisation. Bien que ce ne soit pas idéal pour la sécurité, vous pouvez automatiser l’authentification par mot de passe SSH dans les scripts bash en utilisant le sshpass utilitaire.

Avant de commencer, l’utilisation de mots de passe automatisés pour SSH est considérée comme une mauvaise pratique pour une raison. Dans presque tous les cas, il est préférable d’utiliser une clé SSH, que nous montrerons ci-dessous. Cependant, les mots de passe ont l’avantage d’être plus faciles à gérer, à mémoriser et à distribuer aux membres de l’équipe. Ce sont tous simultanément des inconvénients pour la sécurité, mais c’est un compromis que vous pouvez choisir de faire.

Utiliser SSHPass

Le régulier ssh la commande n’a pas de --password flag pour vous permettre d’automatiser cela facilement. Vous devrez installer un outil appelé sshpass pour gérer cela explicitement. Vous pouvez le télécharger à partir de la plupart des gestionnaires de packages Linux ; pour les systèmes basés sur Debian comme Ubuntu, ce serait :

sudo apt-get install sshpass

Si vous utilisez sshpass depuis l’intérieur d’un fichier de script, vous pouvez le transmettre directement avec le -p flag, suivi de votre commande SSH standard :

sshpass -p 'password' ssh user@remote

Cependant, ce n’est pas une bonne pratique pour plusieurs raisons :

  • S’il est utilisé en dehors d’un fichier de script, il expose le mot de passe en clair à l’historique des commandes Linux et à d’autres systèmes. D’autres utilisateurs de Linux pourront peut-être le voir.
  • Il peut être difficile de savoir qu’il y a un mot de passe enfoui dans ce fichier de script, ce qui peut conduire à de mauvaises autorisations de fichier l’exposant.
  • Il peut être accidentellement suivi dans le contrôle de version et ne permet pas de changer le mot de passe utilisé sur les clients.

Pour cette raison, vous devez plutôt stocker le mot de passe dans un fichier. Assurez-vous de définir les autorisations dessus pour vous assurer qu’il n’est pas accessible par d’autres utilisateurs.

echo "password" > password_file
chmod 600 password_file

Ensuite, passez ceci à sshpass avec -f:

sshpass -f password_file ssh user@remote

Configurer des clés SSH à la place

Les clés SSH sont préférées pour la plupart des systèmes. Ils sont beaucoup plus longs et plus difficiles à fuir accidentellement, ce qui les rend idéaux pour la sécurité. Ils encouragent également l’authentification basée sur l’identité, car les clés SSH sont généralement liées à la machine sur laquelle elles sont créées.

SSH stocke votre clé publique dans ~/.ssh/id_rsa.pub, qu’il utilise pour toutes les requêtes. Il est facile de générer un nouveau fichier de clé :

ssh-keygen

Vous devez ajouter ceci au ~/.ssh/authorized_keys sur le serveur auquel vous souhaitez vous connecter. Il existe une commande SSH intégrée qui peut le faire facilement pour vous :

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

Une fois cela fait, on ne vous demandera plus de mot de passe. Vous pouvez copier cette clé sur d’autres machines, mais il est généralement possible d’ajouter plusieurs clés.

Vous voudrez toujours désactiver les connexions par mot de passe sur le serveur distant et probablement configurer une limitation du débit, une liste blanche ou même une authentification à deux facteurs. Vous pouvez lire notre guide sur la sécurisation d’une machine accessible SSH pour en savoir plus.

Comment verrouiller votre serveur SSH

★★★★★