
При использовании ssh -X
исполняемый файл копируется и запускается локально или запускается на хост-машине. Поскольку это называется переадресацией X11, я думаю, что окно рисуется на моей машине, но выполняется на хосте.
решение1
Исполняемый файл запускается на удаленной машине и отображается (рисуется) на локальной машине. Что ssh -X remote
происходит, так это запуск прокси-сервера X11 на удаленной машине. Если вы делаете это echo $DISPLAY
на удаленной машине, вы должны увидеть что-то вроде localhost:21.0
. Это говорит программе, запущенной на удаленной машине, отправлять команды рисования на сервер X11 с идентификатором 21. Затем он пересылает эти команды на настоящий сервер X11, запущенный на локальной машине, который рисует на вашем экране. Эта пересылка происходит через зашифрованное соединение ssh, поэтому их нельзя (легко) прослушать.
В отличие от Windows, Mac OS и т. д., X11 изначально был разработан для запуска программ по сети, без необходимости в таких вещах, как удаленный рабочий стол. Некоторое время были популярны тонкие клиенты X11. По сути, это урезанный компьютер, на котором работает только сервер X11. Все программы где-то работают на каком-то сервере приложений.
решение2
Приложение работает удаленно, за исключением компонентов X (т. е. рендеринга x-команд и т. д.), которые работают локально. Каждое клиентское приложение обычно использует локальный X-сервер для отображения пользовательского интерфейса. В этом случае команды отправляются через зашифрованный канал SSH с удаленной машины на вашу локальную машину и отображаются там.
решение3
Однако настройка $DISPLAY
— это только половина дела. Чтобы иметь возможность аутентифицировать клиентов на стороне сервера, ssh
также используется xauth
для создания нового куки аутентификации. Смотрите xauth list
и ~/.Xauthority
.
решение4
Ключом может быть понимание того, что X-сервер — это единое целое, которое предоставляет графику пользователю, и все различные программы, которым нужна графика, должны быть X-клиентами и подключаться к серверу. Интерфейс между клиентскими программами и X-сервером был разработан с самого начала для поддержки соединений с удаленными программами, а не только с теми, которые находятся на локальной машине.
В достаточно безумной сети программа может быть запущена где угодно и отображать свою графику где угодно...