Linux

Exécuter des scripts automatisés sur SSH

Nous vous avons montré comment utiliser SSH pour transférer des fichiers en toute sécurité. Mais il y a un problème majeur avec le comportement par défaut de SSH. Vous n’êtes connecté à la machine distante qu’après avoir entré manuellement le mot de passe, ce qui l’exclut pour toutes les tâches que vous souhaitez exécuter sans surveillance. Ou le fait-il ?

Voici un bref aperçu du fonctionnement des outils de la CLI OpenSSH (scp et sftp) afin que vous puissiez mieux apprécier le problème. Lorsque vous souhaitez copier des fichiers vers ou depuis l’hôte distant, vous pouvez utiliser scp qui initie automatiquement une connexion SSH à l’hôte distant. Chaque fois que vous exécutez une commande scp, elle établit une nouvelle connexion à la télécommande. Donc, si vous avez plusieurs commandes scp, vous entreriez le même mot de passe plusieurs fois.

C’est pourquoi vous ne voudriez pas utiliser scp dans les scripts que vous souhaitez exécuter sans surveillance. Il y a aussi le fait que si vous avez plusieurs comptes sur plusieurs machines du réseau, vous aurez du mal à mémoriser des mots de passe uniques et forts pour chacun.

Pour surmonter ce problème, vous devez basculer le mécanisme d’authentification par défaut d’OpenSSH vers un système basé sur des clés.

Clé du succès

Par défaut, OpenSSH utilise uniquement des clés pour authentifier l’identité d’un serveur la première fois qu’un client rencontre une nouvelle machine distante :

Lorsque vous répondez en tapant « oui », l’hôte distant est ajouté à la liste des hôtes connus. Ainsi, en plus du serveur authentifiant le client en demandant un mot de passe, le client authentifie également le serveur à l’aide d’une clé.

Psssssst :  Comment trouver des fichiers volumineux sous Linux ?

De même, vous pouvez vous aussi vous procurer un jeu de clés pour prouver votre identité. OpenSSH utilise une paire de clés pour prouver votre identité et créer une connexion sécurisée à un serveur distant. La clé privée est réservée à vos yeux et est utilisée par votre client OpenSSH pour prouver votre identité aux serveurs. Ensuite, il y a la clé publique que vous êtes censé conserver sous tous vos comptes sur toutes les machines distantes sur lesquelles vous souhaitez vous connecter en SSH.

Pour créer une clé, sur votre client entrez :

N’oubliez pas de ne pas laisser la phrase secrète vide et notez l’emplacement où les clés sont stockées. Le fichier « id_rsa » n’est lisible que par votre compte et son contenu est crypté avec la phrase secrète que vous avez fournie lors de la génération.

L’étape suivante consiste à copier la clé publique sur le serveur distant. En supposant que vous souhaitiez vous connecter à l’utilisateur « admin » sur la machine distante appelée « atlantis.remote.com », vous pouvez déplacer les touches avec une seule commande :

Une fois que vous avez fourni la phrase secrète de votre clé privée, la clé publique sera automatiquement placée à l’emplacement correct sur le serveur distant, qui est par défaut le fichier « ~/.ssh/authorized_keys ».

Psssssst :  Examinez en détail les commandes d'archivage et de compression de Linux

Lorsque vous vous connectez maintenant en ssh à la machine distante, vous serez invité à saisir votre mot de passe. Le seul avantage de l’utilisation de clés est qu’au lieu de vous authentifier avec un mot de passe transmis non crypté, le serveur distant et votre client établissent votre identité sur la base des clés.

De plus, vous pouvez désormais ssh dans plusieurs boîtes distantes en utilisant la même phrase secrète, tant que ces machines distantes ont votre clé publique. Vous n’avez donc pas besoin de vous souvenir de plusieurs mots de passe.

Mais vous ne pouvez toujours pas exécuter de scripts sans être interrompu pour des phrases secrètes.

Agent SSH à la rescousse

OpenSSH intègre un outil appelé ssh-agent, qui conserve vos clés privées en mémoire. Une fois qu’un agent est en cours d’exécution, au lieu de vous demander des phrases secrètes, les clients SSH interagiront avec l’agent.

Vous pouvez démarrer l’agent avec « ssh-agent /bin/bash », en supposant que vous utilisez le shell bash.

Toutes les commandes qui nécessitent un accès à vos clés privées OpenSSH seront interceptées et répondues par l’agent.

Lorsque l’agent s’exécute, vous devez l’équiper de vos clés. Cela se fait en appelant le programme « ssh-add » qui charge par défaut les clés à partir du fichier d’identité par défaut (~/.ssh/id_rsa).

Désormais, lorsque vous vous connecterez à l’ordinateur distant avec « ssh [email protected] », vous serez autorisé sans saisir la phrase secrète !

De même, scp et sftp pourront également se connecter aux hôtes distants sans jamais vous demander de mot de passe. Vous pouvez donc désormais planifier et exécuter des scripts qui manipulent automatiquement les fichiers sur une machine distante.

De plus, maintenant que vous utilisez des clés, c’est une bonne idée de désactiver l’authentification via des mots de passe. Pour ce faire, modifiez le fichier de configuration du serveur distant (/etc/ssh/.sshd_config) et modifiez le paramètre « PasswordAuthentication » de « oui » à « non ». Désormais, si quelqu’un essaie de se connecter à votre service SSH sans avoir de clé publique sur le serveur, l’accès lui sera refusé sans même voir l’invite de connexion.

Crédit image : Karunakar Rayker

Cet article est-il utile ? Oui Non

Bouton retour en haut de la page

Adblock détecté

Veuillez désactiver votre bloqueur de publicités pour pouvoir visualiser le contenu de la page. Pour un site indépendant avec du contenu gratuit, c’est une question de vie ou de mort d’avoir de la publicité. Merci de votre compréhension! Merci