Comment utiliser SSH pour exécuter un script shell sur une machine distante ?

Je dois exécuter un script shell (windows/Linux) sur une machine distante.

J'ai configuré SSH sur les machines A et B. Mon script est sur la machine A qui exécutera une partie de mon code sur une machine distante, la machine B.

Les ordinateurs locaux et distants peuvent être des systèmes basés sur Windows ou Unix.

Existe-t-il un moyen de réaliser cette opération à l'aide de plink/ssh ?

$ ssh user@hostB "ls -la"

Cela vous demandera un mot de passe, à moins que vous n'ayez copié la clé publique de votre utilisateur hostA dans le fichier authorized_keys du répertoire home de l'utilisateur .ssh. Cela permettra une authentification sans mot de passe (si elle est acceptée comme méthode d'authentification dans la configuration du serveur ssh).

Commentaires (3)

Si vous voulez faire cela automatiquement à partir d'une machine "locale", sans vous connecter manuellement à la machine "distante", vous devriez examiner une extension TCL connue sous le nom de Expect, qui est conçue précisément pour ce genre de situation. J'ai également fourni un lien vers un script permettant de se connecter/interagir via SSH.

https://www.nist.gov/services-resources/software/expect

http://bash.cyberciti.biz/security/expect-ssh-login-script/

Commentaires (0)

Tout d'abord, copiez le script sur la machine B en utilisant scp

[user@machineA]$ scp /path/to/script user@machineB:/home/user/path

Ensuite, il suffit d'exécuter le script

[user@machineA]$ ssh user@machineB "/home/user/path/script"

Cela fonctionnera si vous avez donné le droit d'exécution au script.

Commentaires (6)