Comment utilisez-vous ssh dans un script shell?
Lorsque j'essaie d'utiliser un ssh commande dans un script shell, la commande se trouve juste là. Avez-vous un exemple de comment utiliser ssh dans un script shell?
source d'informationauteur Jon Ericson
Vous devez vous connecter pour publier un commentaire.
Dépend de ce que vous voulez faire et comment vous l'utilisez. Si vous voulez juste pour exécuter une commande à distance et en toute sécurité sur une autre machine, il suffit d'utiliser
par exemple
Afin de faire en toute sécurité, vous devez demander à l'utilisateur le mot de passe lors de l'exécution, ou de configurer les touches sur l'hôte distant.
Tout d'abord, vous devez vous assurer que vous avez configuré un mot de passe (clé publique de connexion). Il y a au moins deux versions de ssh légèrement différents formats de fichiers de configuration. De vérifier la ssh man sur votre système, consultez votre administrateur système ou sur la tête de Comment le programme d'installation de la Clé Publique d'Authentification?.
Pour exécuter ssh en mode batch (par exemple au sein d'un script shell), vous devez passer une commande que vous souhaitez exécuter. La syntaxe est la suivante:
Si vous souhaitez exécuter plusieurs commandes en même temps, utilisez des guillemets et des points-virgules:
Les guillemets sont nécessaires pour protéger les points-virgules à partir du shell interprète. 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
attendre
de commande à remplir le nom d'utilisateur/mot de passe info.Vous avez besoin de mettre votre clé publique SSH dans le
~/.ssh/authorized_keys
fichier sur l'hôte distant. Ensuite, vous serez en mesure de SSH pour que l'hôte sans mot de passe.Alternativement, vous pouvez 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.
Plus complexe implique l'ajout de stdin le mot de passe lorsque la ligne de commande à la demande. Attendre, perl bibliothèques, montrer à l'utilisateur à l'invite demandant le mot de passe (si elle est interactive, au moins), il y a beaucoup de choix.