Проблема туннелирования X с удаленной машины

Как насчет cat test.csv | sed 's / \ ", \" / | / g' | sed 's / \ "// g'

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

2
17.04.2017, 12:44
1 ответ

Проверьте, чтобы переменная DISPLAY была правильно установлена на localhost:10.0. Если это не так,

export DISPLAY=localhost:10.0 

то попробуйте xclock снова.

Но почему мне нужно, чтобы 'DISPLAY' был 10.0, а не 0.0?

Сервер X (или X Window, или X11) - это именно сервер, который ждет, пока приложения подключатся к нему, чтобы отобразить их. Это происходит на вашем компьютере, где приложения подключаются к X-серверу через сокет, расположенный в /tmp, обычно называемый /tmp/.X11-unix. Однако, как и все серверы, X11 может быть доступен с удаленных компьютеров и графически отображать приложения, запущенные на удаленных компьютерах.

Однако эта возможность несет в себе множество рисков безопасности, так что открыть ваш сервер X11 для удаленных приложений очень сложно (вам нужно указать одну и ту же опцию как минимум три раза, в разных конфигурационных файлах).

Теперь введите ssh, который вместо этого делает это безопасным: именно опция -Y/-X опции ssh безопасно обрабатывает (также шифруя трафик) все детали открытия вашего локального X11-сервера для удаленного приложения. Однако, когда вы хотите отобразить remote xclock локально, вы должны указать удаленному приложению, что X11-сервер, к которому нужно обратиться, не является его собственным X11-сервером, а находится на удаленном компьютере (том, с которого вы начали ssh сессию). Поэтому xclock должен отправить свой вывод не на локальный сокет в /tmp, а на сетевой порт (это 127.0.0. 1:6010, который ssh милосердно сокращает до localhost:10), с которого ssh позаботится об отправке его обратно на ваш локальный компьютер, где в конечном итоге вывод будет отображен графически.

Если вам не нравится, что различные ssh-соединения (у вас их может быть несколько) разделяются 10 единицами, как в localhost:10.0, localhost:20.0, ... ) вам следует изменить утверждение

X11DisplayOffset 10

в /etc/ssh/sshd_config на то, которое вам нравится (хотя я не вижу причин для этого, если честно).

Именно это утверждение заставляет удаленные дисплеи быть доступными не на порту 6000 (который был бы localhost:0.0), а на порту 6010. Вы можете проверить это сами:

$ ssh -Y vps
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Apr 17 02:47:42 2017 from 
root@vps:~# ss -lntp | grep 6010
LISTEN     0      0                 127.0.0.1:6010                     *:*      users:(("sshd",16172,8))
LISTEN     0      0                       ::1:6010                    :::*      users:(("sshd",16172,7))
2
27.01.2020, 22:10

Теги

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