Как настроить общий доступ к удаленному рабочему столу через SSH?

Есть ли способ просматривать (и контролировать) удаленный рабочий стол через SSH? У меня не будет физического доступа к удаленному хосту.

6 ответов

Решение

Способ 1:

Это может быть достигнуто с vino vnc server & remmina (оба поставляются по умолчанию с ubuntu; если не установить его, запустив sudo apt-get install remmina). Затем запустите следующие команды с локального компьютера в окне терминала:

  1. ssh -Y gman@remote, Используйте надежную пересылку X11, иначе она не будет работать

  2. vino-preferences, Это откроет vino-предпочтения.

    Vino-предпочтения

  3. Также нажмите configure network automatically to accept connection, Но не вводите пароль, его base64 закодировано. Затем нажмите закрыть. Затем запустите:

    sudo -s
    
    export DISPLAY=:0.0
    
    xhost +
    
    /usr/lib/vino/vino-server & 
    

    Это запустит сервер vino.

  4. Выйти с сервера:

    xhost -
    
    Press CTRL+C twice
    
    exit
    
    exit
    
  5. Тогда открой Реммина. выберите vnc по протоколу.

    Под basic вкладка положить адрес сервера в server поле.

    На вкладке SSH нажмите enable ssh tunnel, Под ssh authentication, возможно password или же public key:

    remmina-предпочтения

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


Способ 2:

x11vnc это простой сервер VNC, и вам не придется возиться с настройками Gnome или 500 брандмауэрами, просто установите x11vnc на всех ваших компьютерах (с марионеткой или чем-то, что вы используете для массового контроля).

Затем с вашего локального компьютера запустите:

ssh user@host -L 5900:localhost:5900 "x11vnc -display :0 -noxdamage"

Очевидно, обмен user@host для имени пользователя и имени хоста / IP удаленного компьютера.

А затем используйте VNC-клиент по вашему выбору для подключения к localhost:5900, Команда SSH запускает сервер vnc на удаленном компьютере, а затем туннелирует этот порт через SSH. Вам не нужно открывать какие-либо порты (если вы уже можете SSH).

Если на ваших компьютерах установлены забавные настройки дисплея, лучше оставить -display :0 сегмент в команде SSH. x11vnc Затем автоматически попытается найти правильный дисплей.


Источник: аскубунту

Обзор решения

Предполагая, что вы уже настроили OpenSSH Server на хост-компьютере вы должны сначала включить управление рабочим столом на хост-компьютере. Если вы можете сначала включить управление рабочим столом на своем хост-компьютере локально, перейдите к 1a. Если вы сначала должны включить удаленное управление настольным компьютером на хост-компьютере, перейдите к 1b.

Затем создайте профиль клиента удаленного рабочего стола на вашем клиентском компьютере, чтобы подключиться к хост-компьютеру через туннель SSH и в конечном итоге просматривать и контролировать рабочий стол хост-компьютера через туннель SSH.

1a. Локально включить удаленное управление хост-машиной

Выполните следующие действия на хост-компьютере:

vino-preferences
  • vino-preferences также в Dash под Desktop Sharing

введите описание здесь

  1. Поставить галочку Allow other users to view your desktop
  2. Поставить галочку Allow other users to control your desktop
  3. Поставить галочку Require the user to enter this password
  4. Введите трудно угаданную фразу-пароль
  5. близко

1б. Удаленно включить удаленное управление хост-машиной

Сделайте следующее на клиентском компьютере, заменив 123.123.12.3 с IP-адресом вашего хост-компьютера:

ssh -Y 123.123.12.3
  • -Y, включает доверенную пересылку X11. Доверенные пересылки X11 не подвергаются элементам управления расширением X11 SECURITY.

vino-preferences
  • vino-preferences также в Dash под Desktop Sharing

введите описание здесь

  1. Поставить галочку Allow other users to view your desktop
  2. Поставить галочку Allow other users to control your desktop
  3. Поставить галочку Require the user to enter this password
  4. Введите трудно угаданную фразу-пароль
  5. близко

Создайте профиль клиента удаленного рабочего стола на вашем клиентском компьютере

Выполните следующие действия на клиентском компьютере:

remmina
  • Реммина также в Dash под Remmina Remote Desktop Client

Ctrl+N или Соединение> Новый

введите описание здесь

  1. Введите свой IP-адрес [123.123.12.3], где написано Server
  2. Переключиться на SSH табуляция

введите описание здесь

  1. Поставить галочку Enable SSH Tunnel
  2. Направьте ваш Desktop Client на ваш нестандартный порт SSH
  3. Установите свой SSH Authentication<username> и режим
  4. соединять

Просмотр и управление хост-машиной

На клиентской машине при запросе <username>пароль, введите его для создания туннеля SSH. Когда вас попросят ввести пароль VNC, введите фразу-пароль, которую вы ранее ввели в хост-машину.

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

Я смог установить новую установку Ubuntu 16.04 из удаленного ssh-соединения с помощью следующего скрипта:

#! / Bin / Баш
экспорт DISPLAY=:0
прочитайте -e -p "VNC Password: " -i "ubuntu" password
dconf write /org/gnome/desktop/remote-access/enabled true
dconf write /org/gnome/desktop/remote-access/prompt-enabled false
dconf write /org/gnome/desktop/ удаленный доступ / методы аутентификации "['vnc']"
dconf write /org/gnome/desktop/remote-access/require-encryption false
dconf write /org/gnome/desktop/remote-access/vnc-password \"\'$(echo -n $password | base64)\'\"
dconf dump /org/gnome/ рабочий стол / удаленный доступ /
перезапуск службы sudo lightdm

Цитирование важно для любых настроек строки (одиночные галочки внутри кавычек). Чтобы dconf мог писать, ему нужен доступ к XWindows, поэтому необходима часть экспорта DISPLAY. Я думаю, что вам все равно нужно войти в систему на рабочем столе на фактической машине Ubuntu, чтобы соединиться с VNC после этого. Команда dump предназначена для подтверждения того, что все настройки вступили в силу, вам это не нужно.

При желании вы можете сделать это, если хотите постоянно держать дисплей включенным:

dconf write / org / gnome / desktop / screensaver / lock-enabled false
dconf write / org / gnome / desktop / screensaver / ubuntu-lock-on-suspend false
dconf write / org / gnome / desktop / session / idle-delay "uint32 0"
  1. Вы можете использовать SSH для запуска сеанса VNC
  2. использование Xnest с помощью X11 для удаленного запуска сеанса и его пересылки на текущий компьютер. (Я делаю это время от времени с моей страницей Пи)

я использую Xnest вот так:

  • Xnest :1 -ac &
  • затем DISPLAY=:1 . /etc/X11/Xsession

Как запустить сервер Vino удаленно, без переадресации X (только для командной строки)

Войдите в систему на удаленном компьютере как пользователь, который поделится своим рабочим столом и перенаправит порт 5900 на тот же порт на локальном хосте. С помощью PuTTY перенаправление устанавливается в Connection/SSH/Tunnels. С командной строкой используйте:

 ssh -L 5900:localhost:5900 user@remote-computer

устанавливать vino-server если он еще не установлен. Например:

sudo apt install vino

Включить общий доступ к рабочему столу (в соответствии с номером дисплея в 1-й и 2-й строках):

echo $DISPLAY
export DISPLAY=:0
dbus-launch --exit-with-session gsettings set org.gnome.Vino enabled true
dbus-launch --exit-with-session gsettings set org.gnome.Vino prompt-enabled false
dbus-launch --exit-with-session gsettings set org.gnome.Vino require-encryption false
/usr/lib/vino/vino-server

Запустите VNC Viewer и подключитесь к localhost для адреса сервера VNC.

На сервере ПК.

  • Откройте "Vino-Preferences" из терминала или "Desktop Sharing", используя тире.

На клиентском ПК (откуда вы хотите управлять пользовательским интерфейсом сервера).

  • Сохраните настройки, как показано на изображениях ниже (с изменениями в месте имени пользователя и IP).

Ловушки.

  • Когда я попытался установить vino-предпочтения на сервере с удаленного ПК, используя SSH, он изменился, но соединение не произошло. Я должен был сделать это непосредственно на сервере (а не удаленно). Я не знаю причину такого поведения.

На основе ответа @Khurshid Alam я представляю следующий фрагмент:

ssh $TARGETHOST -L 5900:localhost:5900 "x11vnc -localhost -display :0 -noxdamage" &; sleep 10 && vinagre localhost

  • Это одна команда, которая не требует какого-либо взаимодействия

  • Создает туннель SSH с переадресацией портов, запускается x11vnc достаточно безопасным способом и запускает и подключает VNC Viewer

  • Требуется x11vnc на целевом хосте, но без дальнейшей настройки

  • Это требует vinagre на вашем компьютере, но вы можете тривиально изменить его для другого зрителя VNC
Другие вопросы по тегам