Как указать `$DISPLAY `при ssh с переадресацией X

Кажется, это работает:

for ((i=1;i<=3;i++)); do
    eval echo "$"$(eval echo Var${i}Value)
done

Там где-то шутят, что это ужасно eval...

0
03.07.2020, 05:09
2 ответа

is there a way to specify a number for x when doing ssh -X, like 100.

Нет, потому что не только номер должен быть «назначен», но и ssh должен перенаправить X-протокол на соответствующий локальный сокет для этого номера. И нет никакой гарантии, что «номер» будет свободен при подключении по ssh. Вот почему ssh не предоставляет для этого возможности.

Then even if I lost the X connection to the server, I can re-login and still establish a connection to localhost:100.0

Это не сработает, потому что сервер — это X-сервер на вашем локальном компьютере (, с которого вы подключаетесь по ssh ), а клиентские программы работают на удаленная машина. Таким образом, все клиентские программы должны будут повторно -установить соединение (, потому что задействовано состояние ).

Если вам нужен удаленный рабочий стол, к которому можно повторно подключиться, рассмотрите возможность использования чего-то вроде VNC.

1
18.03.2021, 23:23

Я не знаю способа указать DISPLAY.

В Linux (или, по крайней мере, в Ubuntu )дисплеи — это просто сокеты в /tmp/.X11-unix/. Например,:/tmp/.X11-unix/X0отображается как :0

.

Таким образом, вы можете переместить любой сокет на любой другой путь, и он все равно будет работать. (Я не уверен, верно ли это для ssh -перенаправленных X-соединений, но может быть.)

(Кстати, ssh -Yможет быть более безопасным, чем ssh -X, но я уже давно не пользовался ни тем, ни другим.)

В любом случае, если сокет закрывается (из-за прекращения соединения SSH ), любые программы, работающие на этом сокете, могут закрыться и выйти.

Если вы хотите запускать постоянные X-программы, попробуйте запустить сервер VNC и подключиться к нему с помощью клиента VNC. Вы можете безопасно туннелировать соединение VNC с помощью SSH. Я делаю это регулярно. Я считаю, что вы можете запустить сервер VNC на «виртуальном» дисплее (, что означает, что вы сможете увидеть этот дисплей, только если подключитесь с клиентом VNC ), но я никогда этого не делал.

ОБНОВЛЕНИЕ

Таким образом, пересылка X11 через SSH, вероятно, включает 3 элемента:

  1. Сокет TCP на некотором порту
  2. Переменная DISPLAY
  3. Некоторая форма обработки X -требований полномочий

Все три действия можно выполнить вручную. Вы можете вручную перенаправить любой порт, используя -R. Вы можете вручную установить DISPLAY. Можно (наверное? )каким-то образом отрегулируйте настройки полномочий X -вручную. Обработка прав доступа X -, вероятно, самая сложная, и я не знаю, как это сделать, но подозреваю, что это можно сделать.

Если вы выполните 1, 2 и 3, вы сможете перенаправлять соединения X11, не используя ни -X, ни -Y.

Я все еще подозреваю, что большинство X-программ завершат работу, когда их соединение с сервером будет закрыто.

Я по-прежнему считаю, что настройка сервера и клиента VNC даст лучший результат.

-1
18.03.2021, 23:23

Теги

Похожие вопросы