Я хотел бы запустить скрипт, расположенный на моей машине разработки на машине B, который доступен только через машину A.
Итак, моя машина разработки -(SSH)-> machineA -(SSH)-> machineB
Как я могу это сделать? Скрипт также принимает аргументы.
То, что вы хотите, это туннель через хост перехода или прокси. Есть несколько способов сделать это, основываясь на том, что именно вы пытаетесь сделать, но я считаю, что поместить что-то вроде этого в ~/.ssh/config локально должно работать для вашего случая:
Host b
ProxyJump a
Протестировано с этой конфигурацией:
Host localhost
ProxyJump 127.0.0.1
И это работает так (обрезано, чтобы показать только хмель):
$ ssh -v localhost 'ls ~'
Authenticated to 127.0.0.1 ([127.0.0.1]:22).
Authenticated to localhost (via proxy).
[ls output]
Допустим, у вас есть приведенный ниже скрипт на удаленном компьютере разработчика.
remote-machine-x$ cat /home/userA/dev/zeebash
#!/bin/bash
echo "$@" | mail -s subject mygmailaccount@gmail.com
Чтобы выполнить этот скрипт с локального компьютера, учитывая, что вы уже настроили ssh-ключ, вы можете сделать это примерно так:
p="hi man" ; ssh userA@remote-machine-x "/home/userA/dev/zeebash "$p" "