GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi 'sshpass' n'est pas le bon moyen d'automatiser les transferts de fichiers sous Linux

Question : J'ai été chargé d'automatiser les transferts de fichiers entre des machines distantes à l'aide de scp. Mais je ne sais pas comment donner le mot de passe comme paramètre au scp commande. Un de mes amis a suggéré d'utiliser 'sshpass ' (elle peut prendre le mot de passe comme argument), mais mon patron dit "sshpass n'est pas la bonne façon de le faire et ce n'est pas sécurisé “. Que proposez-vous ?

– Ravi

Réponse :

Ravi, votre ami a la réponse à votre question, mais votre patron a raison . ‘sshpass ' prend le mot de passe comme argument, mais il est moins sécurisé. Utilisez plutôt des clés SSH pour les transferts de fichiers sécurisés.

Essayons les deux méthodes et voyons laquelle est la plus sûre.

Utiliser sshpass

Installez 'sshpass ' en utilisant la commande ci-dessous :

$ yum install sshpass

Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sshpass.x86_64 0:1.05-1.el5 set to be updated
--> Finished Dependency Resolution

Une fois installé, vous pouvez l'utiliser comme ci-dessous :

sshpass -p "password" scp file.txt user@remote_machine:

Attention : Étant donné que le mot de passe est mentionné dans la commande, il peut être consulté par d'autres utilisateurs connectés à la machine à l'aide de 'w ' commande. Pour éviter cela, vous pouvez stocker le mot de passe dans un fichier et passer le fichier comme argument à la commande (illustrée ci-dessous) :

$ echo "password" > passfile.txt
$ chmod 600 passfile.txt
$ sshpass -f passfile.txt scp file.txt user@remote_machine:

Attention : Le mot de passe peut toujours être retracé à partir des fichiers journaux ou de l'historique.

Le verdict est donc que "sshpass" n'est pas une méthode sécurisée . Au lieu de cela, comme votre patron l'a suggéré, vous devez utiliser des clés SSH sécurisées pour les connexions sans mot de passe.

Utiliser des clés SSH sécurisées

Générez des clés ssh sur la machine source comme ci-dessous :

[machine-A ]$ ssh-keygen -t rsa
[machine-A ]$ scp ~/.ssh/id_rsa.pub user@machine-B:.ssh/authorized_keys

Voilà, vous avez configuré une connexion ssh sans mot de passe entre la machine-A et la machine-B. Essayez de transférer des fichiers sans avoir à saisir de mot de passe :

$ scp file.txt user@remote_machine:

Fait! Ravi, parfois les BOSS ont raison 🙂


Linux
  1. Où se trouve le fichier d'en-tête <conio.h> sous Linux ? Pourquoi ne puis-je pas trouver <conio.h> ?

  2. Pourquoi la fonction close est-elle appelée release dans `struct file_operations` dans le noyau Linux ?

  3. Pourquoi avons-nous besoin du fichier .so.1 sous Linux ?

  4. Pourquoi Windows ne reconnaît-il pas les fichiers à l'intérieur des partitions Linux ?

  5. Sous Linux, est-il possible de chiffrer un dossier/partition de manière à ce qu'il ne soit accessible à personne sans le mot de passe ?

Introduction au système de fichiers Linux

Comment éditer des fichiers PDF sous Linux de la manière la plus simple possible

Comprendre les niveaux d'exécution Linux de la bonne façon

EndeavourOS - Apprendre Arch de la bonne façon

La commande Linux sed ne modifie pas le fichier cible

Pourquoi pr_debug du noyau Linux ne donne-t-il aucune sortie ?