Jak użyć SSH do uruchomienia skryptu powłoki na zdalnej maszynie?

Muszę uruchomić skrypt powłoki (windows/Linux) na zdalnej maszynie.

Mam SSH skonfigurowane zarówno na maszynie A, jak i B. Mój skrypt jest na maszynie A, która będzie uruchamiać niektóre z moich kodów na zdalnej maszynie, maszynie B.

Komputery lokalne i zdalne mogą być zarówno systemami opartymi na Windowsie, jak i Unixie.

Czy istnieje sposób, aby uruchomić to przy użyciu plink/ssh?

$ ssh user@hostB "ls -la"

Spowoduje to wyświetlenie monitu o podanie hasła, chyba że skopiowałeś klucz publiczny użytkownika hostA'do pliku authorized_keys w katalogu home użytkownika .ssh'. To pozwoli na uwierzytelnienie bez hasła (jeśli zostanie zaakceptowane jako metoda auth w konfiguracji serwera ssh's)

Komentarze (3)

Zakładając, że masz na myśli to, że chcesz to zrobić automatycznie z "lokalnej" maszyny, bez ręcznego logowania się do "zdalnej" maszyny, powinieneś przyjrzeć się rozszerzeniu TCL znanemu jako Expect, jest ono zaprojektowane dokładnie do tego rodzaju sytuacji. Zamieściłem również link do skryptu do logowania/interakcji przez SSH.

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

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

Komentarze (0)

Po pierwsze, skopiuj skrypt na maszynę B używając scp

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

Następnie wystarczy uruchomić skrypt

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

To zadziała, jeśli nadałeś skryptowi uprawnienia do wykonywania.

Komentarze (6)