Come usare SSH per eseguire uno script di shell su una macchina remota?

Devo eseguire uno script di shell (windows/Linux) su una macchina remota.

Ho configurato SSH su entrambe le macchine A e B. Il mio script è sulla macchina A che eseguirà parte del mio codice su una macchina remota, la macchina B.

I computer locali e remoti possono essere sia sistemi basati su Windows che su Unix.

C'è un modo per eseguire questo usando plink/ssh?

$ ssh user@hostB "ls -la"

Questo vi chiederà la password, a meno che non abbiate copiato la chiave pubblica del vostro utente hostA nel file authorized_keys sulla home dell'utente .ssh's directory. Questo permetterà un'autenticazione senza password (se accettata come metodo di autenticazione nella configurazione del server ssh)

Commentari (3)

Supponendo che tu voglia fare questo automaticamente da una "macchina locale", senza accedere manualmente alla "macchina remota", dovresti dare un'occhiata a un'estensione TCL conosciuta come Expect, è progettata precisamente per questo tipo di situazione. Ho anche fornito un link ad uno script per il log-in/interazione via SSH.

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

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

Commentari (0)

Per prima cosa, copiate lo script sulla macchina B usando scp

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

Poi, basta eseguire lo script

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

Questo funzionerà se avete dato il permesso di eseguibilità allo script.

Commentari (6)