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 rsaExé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_configAjoutez les lignes suivantes dans le fichier pour activer la connexion racine et l'authentification basée sur le mot de passe.
PasswordAuthentication OuiExécutez la commande suivante pour redémarrer le service SSH.
$ sudo service ssh redémarrageSyntaxe
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 commandeDiffé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 sshpassLa 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.15La 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.15La 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'> sshfileExécutez la commande suivante pour définir les bits d'autorisation pour le sshfile fichier qui fera sécuriser le fichier.
$ chmod 0400 sshfileMaintenant, 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.15La 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.shotExécutez la commande suivante à partir du terminal.
$ bash ssh.shotLa 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.