Назад | Перейти на главную страницу

Запустить демон через SSH

Временное решение: сейчас я использую для этого службу systemd, используя invoke для ответа на пароль.

У меня проблемы с выполнением следующей команды через SSH:

ssh -t user@host "sshuttle -D --dns -r user@host:port -x 192.168.1.0/24 0/0"

работает (без демона):

ssh -user1@host1 ssh user2@host2 'sudo sshuttle --dns -r user3@host3:port -x 192.168.1.0/24 0/0'

Не работает (с демоном и сном):

ssh -user1@host1 ssh user2@host2 'sudo sshuttle -D --dns -r user3@host3:port -x 192.168.1.0/24 0/0 && curl ifconfig.co && sleep 3'

Я определил, что проблема полностью связана с аргументом -D (демон).

Все попытки приводят к успешным кодам возврата / выхода, но туннель не инициируется. Если я отброшу daemon arg, он будет работать нормально, но мне нужно, чтобы он работал в фоновом режиме.

Есть идеи, как я могу выполнить демон sshuttle через SSH?

Вы пробовали бегать ssh с -t флаг? Может быть что sshuttle требует tty чтобы бежать. то -t flag принудительно устанавливает соединение с псевдо-терминалом.

Если это не сработает, другим вариантом может быть попытка запустить процесс в screen. например:

ssh user1@host  'screen -dmS myscreen mycommand.sh'  

Это дает процессу место для записи вывода. Поскольку в вашей команде sshuttle много метасимволов, вам может потребоваться разместить их в сценарии запуска где-нибудь в удаленной системе (например, mycommand.sh) или попытаться выяснить, как лучше всего избежать символов (например, && и @), чтобы все это работало в одной строке.