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, и запустит графический интерфейс.
Возьми это за спин.