3

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

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

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

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

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

3 ответа3

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

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

0

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

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

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

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

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