Comment utiliser ssh dans un script shell?
quand j'essaie d'utiliser une commande ssh dans un script shell, la commande reste là. Avez-vous un exemple d'utilisation de ssh dans un script shell?
5 réponses
Dépend de ce que vous voulez faire et comment vous l'utilisez. Si vous voulez simplement exécuter une commande à distance et en toute sécurité sur une autre machine, utilisez
ssh user@host command
par exemple
ssh user@host ls
pour ce faire en toute sécurité, vous devez soit demander à l'utilisateur le mot de passe pendant l'exécution, soit configurer les clés sur la machine distante.
tout d'abord, vous devez vous assurer que vous avez mis en place sans mot de passe (connexion à clé publique). Il y a au moins deux saveurs de ssh avec des formats de fichiers de configuration légèrement différents. Cochez la page de manuel ssh sur votre système, consultez votre administrateur système local ou passez à comment configurer L'authentification par clé publique? .
pour exécuter ssh en mode discontinu( comme dans un script shell), vous devez passer une commande vous voulez être en course. La syntaxe est:
ssh host command
si vous voulez exécuter plus d'une commande en même temps, utilisez les guillemets et les points-virgule:
ssh host "command1; command2"
les guillemets sont nécessaires pour protéger le point-virgule de l'interpréteur de commandes. Si vous les avez laissés, seule la première commande exécuter à distance et tout le reste sera exécuté sur la machine locale.
vous pouvez utiliser expect
pour remplir la commande nom d'utilisateur/mot de passe.
vous devez mettre votre clé publique SSH dans le fichier ~/.ssh/authorized_keys
sur l'hôte distant. Ensuite, vous serez en mesure de SSH à cet hôte sans mot de passe.
vous pouvez aussi utiliser ssh-agent
. Je déconseille de stocker le mot de passe dans le script.
la façon La plus simple est d'utiliser un certificat pour l'utilisateur qui exécute le script.
un plus complexe implique d'ajouter à stdin le mot de passe lorsque la commande shell le demande. Attendez-vous, bibliothèques perl, montrer à l'utilisateur l'invite demander le mot de passe (si est interactif, au moins), il ya beaucoup de choix.