Я хотел бы запустить скрипт, расположенный на моей машине разработки на машине B, который доступен только через машину A.

Итак, моя машина разработки -(SSH)-> machineA -(SSH)-> machineB

Как я могу это сделать? Скрипт также принимает аргументы.

2 ответа2

0

То, что вы хотите, это туннель через хост перехода или прокси. Есть несколько способов сделать это, основываясь на том, что именно вы пытаетесь сделать, но я считаю, что поместить что-то вроде этого в ~/.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]
-1

Допустим, у вас есть приведенный ниже скрипт на удаленном компьютере разработчика.

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" "

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .