Comment donner le mot de passe dans le script shell?
Dans un fichier script shell, je suis à l'aide de quelques commandes comme scp
et make install
qui me demande mon mot de passe.
- Je exécuter un script shell pour compiler un gros projet, et, après quelque temps, on me demande mon mot de passe pour l'utilisation de scp
. J'ai besoin d'attendre pour que le processus et donner le mot de passe après.
J'ai juste envie de tout faire par script shell sans interaction, alors comment puis-je éviter d'être invité à entrer le mot de passe ici?
toute solution pour l'écriture de mot de passe en clair dans le script shell?
c'est probablement ce qui appartient à serverfault
c'est probablement ce qui appartient à serverfault
OriginalL'auteur Jeegar Patel | 2012-02-20
Vous devez vous connecter pour publier un commentaire.
Si vous ne pouvez pas utiliser ssh confiance et doit entrer le mot de passe plus tard dans le script, utilisez
read -s -p "Password:" USER_PASSWORD
à lire en silence dans le mot de passe. Vous pouvez ensuiteexport USER_PASSWORD
à un script expect, en évitant qu'il soit affiché dansps
:OriginalL'auteur Alex
Réponse courte: NE PAS
Utilisation l'authentification par clé publique pour les SCP et
sudo
avec NOPASSWD directive pour faire installerOriginalL'auteur Kimvais
Je pense que c'est une meilleure idée de générer une clé d'authentification, et utilisez cette clé d'authentification basée sur la place de l'écriture de texte en clair des mots de passe dans vos scripts.
Ceci a été écrit en même temps! Merci pour downvoting!
OriginalL'auteur KARASZI István
Non, vous ne trouverez pas de méthode pour utiliser SSH fichiers de configuration ou une option de ligne de commande pour avoir un mot de passe codés en dur et je suis sûr que c'est par la conception.
Si vous avez de l'environnement qui rend ce travail difficile, il serait peut-être utile de savoir que le script peut spécifier un fichier d'identité en utilisant l'argument-i de sorte que vous n'avez pas à avoir tout un répertoire d'accueil de l'installation ou quelque chose comme ça. Il y a d'autres options que de l'aide utiliser l'authentification par clé ssh vraiment encourage plus de mot de passe d'authentification.
Si vous utilisez ce à travers plusieurs utilisateurs qui vous ne voulez pas être pris la peine de créer des clés et de les copier sur le serveur, vous pourriez script aussi. Il ne serait pas difficile de vérifier une clé existante et faire un rapide test pour voir si vous pouvez établir une connexion avec elle. Si vous ne pouvez pas, sans un mot de passe, alors vous feriez ssh-copy-id pour le serveur en demandant le mot de passe ssh qu'une seule fois et au début du script, donc peu de décalage entre le démarrage et l'exécution du script et il serait qu'une seule fois. Vous pouvez même configurer une clé séparée pour chaque utilisateur juste pour le script dans leur propre ~/.script/clé/directory, de sorte que vous pourrait décourager les utilisateurs d'accéder au serveur en SSH.
Si vous voulez vraiment limiter ce qui peut être fait sur le serveur distant par l'utilisateur, vous pouvez utiliser rssh de la coquille sur le compte distant, ce qui limite l'accès de l'utilisateur pour le transfert de fichiers.
OriginalL'auteur flickerfly
Une bonne façon dont nous l'avons fait dans le passé pour fournir des mots de passe pour les scripts nécessaires lors de l'utilisation de l'authentification basée sur une clé a été impossible ou nécessaires à l'utilisation de mots de passe pour les applications, les services, mysql, quoi que...nous avons des mots de passe stockés dans un fichier crypté et le décryptage de ce fichier lors de l'exécution de fournir le mot de passe pour les scripts.
Le mot de passe de déchiffrement script, nous allons l'appeler, yourcreds.rb, a été limitée à la racine utiliser uniquement des cours et les mots de passe non cryptés wern pas stockées n'importe où. Ainsi, par exemple, vous pouvez exécuter:
root@host:~# yourcreds.rb | grep mysql | awk {'print $3'}
Qui, sans awk serait par exemple de sortie de la stockées en ligne:
service | utilisateur | mot de passe | description | etc...
mysql mysqluser mot de passe ....
Avec yourcreds.rb (ou autre) vous pouvez sortie juste le mot de passe et facilement intégrer cette méthode dans les scripts /cron jobs dans les plus grandes ou les plus complexes de l'environnement.
Aussi si je me souviens bien, nous n'avons pas eu à utiliser grep /awk ou quoi que ce soit. Nous avons juste programmé dans choisit d'analyser ce genre de choses: yourcreds.rb liste mysql ou yourcreds.rb -l, etc.
Nous avons utilisé blowfish et yamls pour stocker les mots de passe chiffrés. Je suis sûr que vous pouvez être créatif. Assurez-vous simplement que c'est l'épreuve des balles à n'importe qui, mais de la racine.
OriginalL'auteur David Cahill