12 votes

Est-il possible de passer des mots de passe sur un Shell ShellscriptShell ?

Depuis le temps que je cherche, je voudrais savoir s'il est possible de passer des mots de passe dans un Shell ShellscriptShell ? Beaucoup de réponses ont retourné avec non. Récemment, j'ai lu un article indiquant que comment passer des mots de passe dans un Shell ShellscriptShell. J'ai essayé, mais cela ne semble pas fonctionner. Voici le lien . Quelqu'un peut-il vérifier et revenir en arrière ? Aussi, dites-moi s'il existe un moyen de passer des mots de passe dans un Shell ShellscriptShell ? Si non pls me dire comment linux obtient l'entrée pour le mot de passe ?

14voto

Lekensteyn Points 162346

Par "saisie de mots de passe", vous entendez probablement la saisie de données qui ne sont pas visibles pour l'utilisateur.

(suggéré par geirha) Lorsque vous utilisez bash, vous pouvez utiliser la fonction -s pour empêcher l'affichage des caractères saisis :

read -p "Password please: " -s pass

Vous pouvez également modifier le comportement du terminal pour masquer les caractères tapés avec stty -echo (désactiver echo ). Après avoir lu le mot de passe avec le Shell intégré. read dans une variable (dans l'exemple ci-dessous, $pass ), le remettre en marche avec stty echo . Parce que la nouvelle ligne de Enter est caché, vous devez imprimer une nouvelle ligne pour obtenir la sortie future sur une nouvelle ligne.

stty -echo
read -p "Password please: " pass
stty echo
printf '\n'

read y printf sont des Shell built-ins. stty est fourni par le coreutils qui est installé par défaut. Cela signifie que cet extrait est très portable.

Remarque : le -p n'est pas standard, mais de bash . Si vous devez afficher une invite dans d'autres shells, utilisez :

printf "Password please: "
stty -echo
read pass
stty echo
printf '\n'

Références :

0 votes

Je veux juste donner le mot de passe root du système distant dans le . Est-ce possible dans votre cas ?

0 votes

@karthick87 : non, ce script ne fait que capturer les données que l'utilisateur tape de manière interactive. Si vous voulez mettre des mots de passe root dans des , pourquoi ne pas envisager des logins basés sur des clés ?

1 votes

La lecture de Bash a également une option pour désactiver l'écho pendant la lecture de la ligne. Voir help '\read' .

2voto

Fabiano Soriani Points 543

A quel programme voulez-vous passer un mot de passe ?

Le script du lien fonctionne pour moi. Notez que ce n'est pas un script script mais un script expectatif (a besoin du package expect à installer "). L'utilisation de expectation est un moyen courant d'automatiser les programmes interactifs basés sur le texte.

Non interactif ssh les connexions sont souvent effectuées en utilisant l'authentification par clé avec une phrase de passe vide.

Certains autres programmes (comme sudo ) ont des options pour lire un mot de passe depuis stdin.

Fournir un mot de passe comme option de ligne de commande pose souvent un problème de sécurité car, sur la plupart des systèmes, tout utilisateur peut voir les processus des autres utilisateurs, y compris leurs arguments de ligne de commande, à l'aide d'outils simples tels que ps .

1voto

Steve Karg Points 11

Un script ne devrait jamais vraiment gérer les mots de passe. Faites en sorte que l'application qui a besoin du mot de passe le demande elle-même, ou si ce n'est pas possible, trouvez un meilleur moyen de vous authentifier auprès de l'application. Veuillez lire http://mywiki.wooledge.org/BashFAQ/069

0voto

Alexander Nick Points 1

J'ai rencontré ce problème également et j'ai créé un outil opensource (licence MIT) pour faire cela, appelé encpass.sh. ( https://github.com/plyint/encpass.sh ) Il crée une clé pour le script et stocke la clé et les secrets cryptés dans un répertoire caché sur le disque. (Typiquement dans le répertoire personnel de votre utilisateur, mais vous pouvez définir un autre emplacement si vous préférez).

0voto

Il existe un moyen de stocker des mots de passe dans un script de bash, mais vous devez crypter le script pour que personne ne puisse le lire ou lancer un débogueur pour voir exactement ce qu'il fait. Pour crypter un bash/script script et faire en sorte qu'il soit exécutable, essayez de copier et de coller le texte suivant aquí

Sur la page ci-dessus, tout ce que vous avez à faire est de soumettre votre script (vous pouvez soumettre un échantillon de script d'abord pour votre tranquillité d'esprit). Un fichier zip sera généré pour vous. Faites un clic droit sur le lien de téléchargement et copiez l'URL qui vous est fournie. Ensuite, allez sur votre boîte UNIX et effectuez les étapes suivantes.

Installation :

   wget link-to-the-zip-file
   unzip the-newly-downloaded-zip-file
   cd /tmp/KingLazySHIELD
   ./install.sh  /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username)  -force 

Ce que la commande d'installation ci-dessus va faire pour vous est :

  1. Il va installer le script crypté dans le répertoire /var/tmp/KINGLAZY/SHIELDX-(your-script-name) .

  2. Il placera un lien vers ce script crypté dans le répertoire que vous spécifiez en remplacement de /home/(your-username) - de cette façon, cela vous permet d'accéder facilement au script sans avoir à taper le chemin absolu.

  3. Assure que PERSONNE ne peut modifier le script - Toute tentative de modifier le script crypté le rendra inopérant... jusqu'à ce que ces tentatives soient arrêtées ou supprimées.

  4. Assurez-vous qu'absolument PERSONNE ne puisse en faire des copies. Personne ne peut copier votre script dans un endroit isolé et essayer de le tripoter pour voir comment il fonctionne. Toutes les copies du script doivent être des liens vers l'emplacement d'origine que vous avez spécifié lors de l'installation.

NOTE :

Je ne crois pas que cela fonctionne pour scripts qui demande à l'utilisateur de répondre. Les valeurs doivent être codées en dur dans le script. Le cryptage garantit que personne ne peut réellement voir ces valeurs, vous n'avez donc pas à vous en soucier.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X