SSH X Tunnel через не-X сервер

Странная вариация на стандартный вопрос "многопролетный туннель".

Сейчас я работаю удаленно, но у меня есть несколько "входящих" автоматических обратных оболочек, подключающихся к выделенному серверу. Этот выделенный сервер не имеет X, но некоторые из "входящих" серверов оболочки имеют.

В основном, взять три машины, ноутбук, сервер, клиент. Ноутбук и клиент имеют X, сервер не имеет. Все три компьютера имеют логин без паролей друг к другу (ноутбук> сервер, сервер> клиент) и могут устанавливать оболочку без пароля.

я пробовал ssh -X user@server "ssh -X user@client gui-application" и, не удивительно, я получаю сообщения "Не удается открыть дисплей".

Кто-нибудь знает, я хороший лайнер для такого рода туннелирования?

3 ответа

Решение

Ваша команда на самом деле работает для меня, поэтому я не думаю, что вам нужно делать что-то совсем другое. Тем не менее, я обнаружил, что он работал намного быстрее, если бы я использовал -t вариант по первому ssh:

ssh -tX user@server "ssh -X user@client gui-application"

Кажется, это как-то связано с ssh-agent и спрашивая пароль в моем случае, так как мои ключи ssh защищены паролями. Однако, возможно, это поможет и в вашем случае.

Я также попытался добавить -A (переадресация агента) на обе команды ssh, и это тоже сработало, хотя и с задержкой в ​​несколько секунд (не знаю почему). Он придумал диалоговое окно с паролем GUI для ключа перехода от "сервера" к "клиенту".

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

ssh -tX user@server ". .profile; ssh -X user@client gui-application"

Похоже, ваш сервер прыжков не позволяет X Установите 'X11Forwarding yes' в /etc/ssh/sshd_config вашего сервера прыжков (также не забудьте перезапустить sshd после изменения настроек.

Попробуйте пробить прямо через первый прыжок:

ssh -N -L 9999:client:22 user@server
ssh -p 9999 -X user@localhost gui-application

Первая команда перенаправит локальный порт 9999 на SSH-порт клиента. Оставьте эту команду запущенной - она ​​не выдаст выходных данных после входа в систему. Вторая команда подключит SSH к вашему локальному порту 9999, который на самом деле является "клиентским" портом SSH, и запустит графический интерфейс.

Возьми это за спин.

Другие вопросы по тегам