1

Я делаю SSH с двойным прыжком, чтобы сначала попасть на сервер, который имеет публичный IP-адрес и открыть порт SSH, затем SSHing на следующий компьютер, одновременно подключая мой локальный порт VNC к порту удаленных систем. На диаграмме:

[Моя локальная система] --- Туннель SSH (порт 5900 вперед)-> [Сервер] - Туннель SSH (порт 5900 вперед)-> [Удаленная система]

Я создал одностроковую команду, чтобы сделать все это, но есть одна загвоздка. x11VNC, по-видимому, аварийно завершает работу. Как буквально, я мог бы сделать 10 минут работы, прежде чем моя система снова зависнет, и мне придется перезапустить x11vnc. Но дело не в этом.

Команда, которую я использую, выглядит следующим образом:

ssh -L 5900:[REMOTE SYSTEM IP]:5900 user@FQDN.SERVER.NET 'ssh [REMOTE SYSTEM IP] 'pkill x11vnc; x11vnc --ncache 10''

Теперь я включил здесь команду PKILL, чтобы она очистила замороженный экземпляр x11vnc, который все еще работает, чтобы я мог освободить порт 5900 (и не иметь процессов зомби, пронизывающих мою систему): Однако это не работает. Независимо от того, что я делаю, если это двойной прыжок, это просто возвращает x11vnc, команда не найдена

ПРИМЕЧАНИЕ: если я удаляю pkill, эта командная строка работает отлично. Но мне нужно убить зомби

Если с сервера, однако я пытаюсь запустить команду:

ssh [REMOTE SYSTEM IP] 'pkill x11vnc; x11vnc --ncache 10' 

это работает отлично! Кто-нибудь знает, почему это не сработает при выполнении ssh-соединения "double hop"?

2 ответа2

1

Из вашего примера похоже, что вы вкладываете набор одинарных кавычек в другой набор одинарных кавычек. Вам нужно будет "экранировать" внутренний набор кавычек и точку с запятой следующим образом:

ssh -L 5900:[REMOTE SYSTEM IP]:5900 user@FQDN.SERVER.NET 'ssh [REMOTE SYSTEM IP] \'pkill x11vnc\; x11vnc --ncache 10\''

Кроме того, вы можете создать небольшой командный файл в системе, в которой работает x11vnc. Сценарий выполняет команду kill, затем x11vnc, и все, что вы делаете, - запускаете сценарий в качестве вашей последней команды.

0

Я смог наконец решить проблему. Оказывается, мне нужно было использовать «вместо» для внутреннего ». (обратный удар (серьезный акцент) вместо одинарных кавычек)

Итак, последняя рабочая команда:

ssh -L 5900:[REMOTE SYSTEM IP]:5900 user@FQDN.SERVER.NET 'ssh [REMOTE SYSTEM IP \`pkill x11vnc\; x11vnc --ncache 10\`'

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