Comment utiliser SSHPASS pour la connexion SSH non interactive

Comment utiliser SSHPASS pour la connexion SSH non interactive
L'utilisateur Linux peut utiliser une authentification basée sur un mot de passe ou sans mot de passe pour se connecter au serveur distant à l'aide de SSH. L'authentification sans mot de passe est plus sécurisée, mais la manière la plus simple et la plus populaire d'authentification est l'authentification basée sur le mot de passe. L'utilisateur doit fournir le mot de passe chaque fois que vous devez s'authentifier et le SSH a également besoin d'accéder manuellement à un script de shell.

Le sshpass L'utilitaire est utilisé pour implémenter l'authentification automatisée basée sur les mots. Il exécute le SSH dans TTY dédié (TeleTypeWriter) pour confirmer que le mot de passe est fourni par un utilisateur de clavier interactif pour une authentification non interactive. Comment le sshpass Peut être utilisé pour l'authentification s'est montrée dans ce tutoriel.

Conditions préalables

Avant de commencer les étapes de ce tutoriel, les étapes suivantes devront terminer.

Activez le service SSH sur Ubuntu s'il n'est pas activé avant.

Générer les paires de clés ssh pour exécuter les commandes du serveur distant. Exécutez la commande suivante pour créer la clé publique et la clé privée. La clé privée sera stockée dans le serveur distant et les clés publiques seront stockées dans le client en toute sécurité.

$ ssh-keygen -t rsa

Exécutez la commande suivante pour ouvrir le sshd_config Fichier à l'aide de Nano Editor pour ajouter quelques configurations nécessaires.

$ sudo nano / etc / ssh / sshd_config

Ajoutez les lignes suivantes dans le fichier pour activer la connexion racine et l'authentification basée sur le mot de passe.

PasswordAuthentication Oui
Permutrootlogin oui

Exécutez la commande suivante pour redémarrer le service SSH.

$ sudo service ssh redémarrage

Syntaxe

La syntaxe de cette commande est donnée ci-dessous. Il prend en charge différentes options qui ont été décrites plus tard.

$ sshpass [-f nom de fichier | -d numéro | -p mot de passe | -e] [options] arguments de commande

Différentes options de la commande sshpass

Le but de différent sshpass Les options ont été décrites ici. sshpass lit le mot de passe à partir de l'entrée standard si aucune option n'est donnée.

Option But
-P mot de passe Il est utilisé pour fournir le mot de passe sur la ligne de commande.
-F Nom de fichier Il est utilisé pour donner la source alternative du mot de passe.
-N numéro Il est utilisé pour fournir le descripteur de fichier hérité par SSHPASS.
-e Il est utilisé pour prendre le mot de passe de la variable d'environnement «sshpass».

Installer sshpass

SSHPass n'est pas installé sur Ubuntu par défaut. Exécutez la commande suivante pour installer SSHPASS sur Ubuntu.

$ sudo apt-get install sshpass

La sortie suivante apparaîtra si le sshpass est installé correctement.

Connectez-vous avec le serveur en fournissant un mot de passe

La façon de se connecter avec la machine distante en utilisant l'option SSHPASS avec -p est affichée dans cette partie du tutoriel. Ici, le nom d'utilisateur est «Fahmida» et le mot de passe est «12345» de la machine Sever. L'adresse IP de la machine serveur est 10.0.2.15. Le nom d'utilisateur de la machine client est 'yesmin'. Exécutez la commande suivante pour se connecter avec le serveur en fournissant le mot de passe.

$ sshpass -p '12345' ssh Fahmida @ 10.0.2.15

La sortie suivante apparaîtra si la connexion est établie correctement avec la machine du serveur. La sortie montre que le nom d'utilisateur est changé en «Fahmida» de «Yesmin» dans l'invite de commande après avoir établi la connexion. Maintenant, si l'utilisateur exécute une commande, il sera exécuté à partir de la machine du serveur.

Connectez-vous avec le serveur sans fournir de mot de passe

Il n'est pas sécurisé pour fournir le mot de passe dans la ligne de commande. Ce problème peut être résolu de deux manières. Une façon consiste à enregistrer le mot de passe dans la variable d'environnement en utilisant le exporter commande et une autre façon est d'enregistrer le mot de passe dans un fichier.

Exécutez la commande suivante pour enregistrer le mot de passe dans la variable d'environnement SSHPass à l'aide de la commande Export.

$ export sshpass = "12345"

Maintenant, vous pouvez exécuter la commande sshpass avec l'option -e pour établir la connexion avec la machine du serveur sans fournir de mot de passe dans la ligne de commande. Exécutez la commande suivante pour se connecter avec le serveur sans donner le mot de passe.

$ sshpass -e ssh Fahmida @ 10.0.2.15

La sortie suivante apparaîtra si la connexion est établie correctement avec la machine du serveur. La sortie montre que le nom d'utilisateur est changé en «Fahmida» de «Yesmin» dans l'invite de commande après avoir établi la connexion comme la commande précédente.

La façon de se connecter avec le serveur en utilisant sshpass En enregistrant le mot de passe dans un fichier a été affiché dans cette partie du tutoriel. Exécutez la commande suivante pour créer le sshfile filer et stocker le mot de passe pour se connecter avec la machine du serveur.

$ echo '12345'> sshfile

Exécutez la commande suivante pour définir les bits d'autorisation pour le sshfile fichier qui fera sécuriser le fichier.

$ chmod 0400 sshfile

Maintenant, exécutez la commande suivante pour se connecter avec le serveur sans fournir le mot de passe dans la ligne de commande. Ici, l'option -f a été utilisée avec sshpass Commande pour lire le mot de passe du fichier.

$ sshpass -f sshfile ssh fahmida @ 10.0.2.15

La sortie suivante apparaîtra si la connexion est établie correctement avec la machine du serveur. La sortie montre que le nom d'utilisateur est changé en «Fahmida» de «Yesmin» dans l'invite de commande après avoir établi la connexion comme la commande précédente.

En utilisant la commande sshpass dans le script

La commande sshpass est utilisée pour établir la connexion avec le serveur à partir du terminal dans la partie précédente de ce tutoriel. Mais vous pouvez exécuter n'importe quelle commande dans la machine du serveur sans vous connecter dans le serveur en écrivant un script bash avec la commande sshpass. Créer un fichier bash nommé ssh.shot dans la machine client avec le contenu suivant. Le script exécutera le 'Pwd' Commande dans la machine du serveur et stockez la sortie dans une variable. La valeur de la variable sera imprimée plus tard.

ssh.shot
#!/ bac / bash
valeur = $ (sshpass -f sshfile ssh fahmida @ 10.0.2.15 'Pwd')
Echo $ valeur

Exécutez la commande suivante à partir du terminal.

$ bash ssh.shot

La sortie suivante apparaîtra si le PWD La commande est exécutée correctement dans la machine du serveur. Le nom d'utilisateur de la machine du serveur est «Fahmida». Ainsi, la sortie montre que '/ home / fahmida /' est la sortie du PWD commande.

Conclusion

Les utilisations de la commande SSHPASS pour la connexion non interactive ont été présentées dans ce tutoriel par deux comptes d'utilisateurs différents du localhost. Vous pouvez effectuer la même tâche pour l'hôte distant en suivant les étapes affichées dans ce tutoriel.