Как перенаправить X через два SSH-туннеля?

Как перенаправить X через два SSH-туннеля?

Я пытаюсь запустить программу X на домашнем компьютере с рабочего компьютера. Базовая настройка такова:

Рабочий компьютер Arch Linux -> SSH-маршрутизатор OpenBSD (дома) -> домашний компьютер Arch Linux (с SSH)

Я никогда не пробовал этого делать и не совсем уверен, как это сделать. Как мне заставить это работать?

Когда я просто пытаюсь сделать

$(work computer) ssh -Y home-ip
..
$(home router) ssh -Y private-ip

На последнем туннеле получаю сообщение «Запрос на пересылку X11 не выполнен на канале 0»

Как это правильно сделать?

EDIT: Я забыл включить X forwarding на sshd моего домашнего компьютера. Я это исправил, но, похоже, ничего не происходит, когда я выполняю простую команду типа xterm. Он просто сидит там, предположительно пытаясь отобразить окно xterm на моем маршрутизаторе, а не на моем рабочем компьютере

решение1

А как насчет переадресации порта вашего рабочего компьютера на порт 22 домашнего компьютера, а затем ssh -Yна этот локальный порт?

Например,

ssh -L 2222:private-ip:22 router-ip
ssh -Y localhost:2222

решение2

То, что вы сделали, должно работать, но вам нужно xauthустановить программу на маршрутизаторе, чтобы она могла создать ключ безопасности для виртуального дисплея X11, который создает SSH. Вам нужно xauthна любой машине, на которой вы ssh -Xили ssh -Y, даже если вы на самом деле не запускаете там никаких приложений X, а просто используете его как шаг к чему-то другому.

После подключения к домашнему компьютеру проверьте $DISPLAYпеременную. Она должна быть примерно такой localhost:10: . Если нет, вернитесь в оболочку на маршрутизаторе и проверьте $DISPLAYтам.

Связанный контент