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

Contenu

Bash Shell

SSH n'a pas un moyen facile d'envoyer des mots de passe via une entrée standard, rendre l'automatisation difficile. Bien que 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 automatiques 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 ensuite. Malgré cela, les mots de passe ont l'avantage d'être plus faciles à gérer, mémoriser et distribuer aux membres de l'équipe. Tous ces inconvénients sont à la fois pour la sécurité, mais c'est un compromis que vous pouvez choisir d'effectuer.

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, cela serait:

sudo apt-get install sshpass

Si vous utilisez sshpass depuis l'intérieur d'un fichier de script, peut le passer directement avec le -p drapeau, suivi de votre commande SSH standard:

sshpass -p 'mot de passe' ssh user@remote

Malgré cela, ce n'est pas une bonne pratique pour certaines raisons:

  • Si utilisé en dehors d'un fichier de script, expose le mot de passe en texte brut à l'historique des commandes de Linux et d'autres systèmes. Il est possible que d'autres utilisateurs de Linux puissent le voir.
  • Il est possible qu'il ne soit pas clair qu'il y ait un mot de passe caché dans ce fichier de script, ce qui pourrait conduire à des autorisations de fichiers incorrectes vous exposant.
  • Peut être accidentellement suivi dans le contrôle de version et ne permet pas de modifier le mot de passe utilisé sur les clients.

À cause de, vous devez stocker le mot de passe dans un fichier. assurez-vous de configurer les autorisations pour vous assurer que les autres utilisateurs ne peuvent pas y accéder.

écho "mot de passe" > password_file
chmod 600 password_file

Après, cela arrive à sshpass avec -f:

sshpass -f password_file ssh user@remote

Configurez plutôt les clés SSH

Les clés SSH sont préférées pour la plupart des systèmes. Ils sont beaucoup plus longs et plus difficiles à filtrer accidentellement, ce qui les rend idéales pour la sécurité. Ils favorisent également l'authentification basée sur l'identité, puisque 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, que vous utilisez pour toutes les demandes. Il est facile de générer un nouveau fichier clé:

ssh-keygen

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

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

Une fois cela fait, vous ne serez plus invité à entrer un mot de passe. Vous pouvez copier cette clé sur d'autres machines, mais régulièrement c'est bien d'ajouter plusieurs clés.

Vous voudrez toujours désactiver les connexions par mot de passe sur le serveur distant et probablement configurer la limitation de vitesse, la liste blanche ou encore l'authentification à deux facteurs. Vous pouvez lire notre guide sur la sécurisation d'une machine SSH accessible pour plus d'informations.

EN RELATION: Comment bloquer votre serveur SSH

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.