Вы не можете перенаправить весь рабочий стол через ssh
, потому что архитектура работает иначе.
Для X (графической системы, используемой в Linux ), у вас есть X-сервер, работающий на определенной машине (или, в прежние времена, на выделенном оборудовании, которое не является компьютером общего назначения. ). X-клиенты могут подключаться к (, обычно к одному )X-серверу, и тогда X-сервер будет отображать окно (с )клиентов на графическом оборудовании, где работает X-сервер.
Теперь, когда вы выполняете переадресацию X через ssh
, все настроено так, что X-клиенты, запущенные на удаленной машине, не подключаются к X-серверу на удаленной машине, а вместо этого подключаются к X-серверу на вашей локальной машине. машина. Таким образом, любые окна X-клиентов, которые вы запускаете в сеансе ssh, отображаются на вашем локальном компьютере. Любые X-клиенты, которые не являются частью сеанса ssh на удаленной машине, все равно подключаются к удаленному X-серверу.
Если вы хотите перенаправить «весь рабочий стол», то сначала вам нужен какой-нибудь «виртуальный» X-сервер, к которому могут подключаться X-клиенты, вместо подключения к X-серверу, привязанному к реальному оборудованию. Затем этот виртуальный X-сервер может различными способами перенаправлять соединения на другие дисплеи.
Так что да, вам нужно что-то вроде VNC, Xephyr, Xpra и т. д.
Если у вас есть конкретные идеи, как просматривать контент с удаленного виртуального X-сервера на вашем ноутбуке (не в окне, и вы хотите пробросить X-протокол ), тогда Xpra с клонированием ] вероятно, ближе всего (отказ от ответственности :Я сам не пробовал ).
Обратите внимание, что сегодня существует большая проблема с пересылкой приложений, которые используют ускорение OpenGL (, довольно много )по протоколу X, потому что вы теряете аппаратное ускорение.
Редактировать
Запуск всего сеанса — совсем другой зверь, и совсем не сложный,при условии отсутствия рабочего стола (, в частности, на вашем локальном X-сервере не запущен оконный менеджер ):
Вам просто нужно запустить все, что обычно запускается на удаленной машине из вашего ssh
соединения с переменной DISPLAY
, указывающей на локальный X-сервер.
К сожалению, в настоящее время существует множество совершенно разных способов сделать это. Для меня, поскольку я старомоден, мне просто нужно выполнить /etc/X11/xdm/Xsession
, но вам придется сделать это в любом Gnome/KDE/systemd, который решил, что они хотят это сделать.
Одно из решений — не пытаться запускать команды systemd из udev, а вместо этого использовать StopWhenUnneeded=true
. Однако это требует исправления основной проблемы с устройством , которую я подробно описал в другом ответе .