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

44

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

gerky
источник
vino не относится к
Сиро Сантилли, 10 сентября 17

Ответы:

51

Способ 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Затем автоматически попытается найти правильный дисплей.


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

Хуршид Алам
источник
Если вы используете vncviewer с медленным ssh-соединением, ваша команда должна выглядеть следующим образом vncviewer localhost::5900 -viewonly -encodings "tight" -quality 0(в Debian / Ubuntu средство просмотра - от узла tailvnc) или vncviewer localhost::5900 -viewonly -PreferredEncoding tight QualityLevel=0(в Red Hat / Fedora средство просмотра - от tigervnc), где уровень качества как в Debian, так и в Redhat равен между 0 и 9, где 9 лучше, но требуется быстрое соединение.
Эрик
@erik Спасибо за объяснение, как использовать его vncviewerдля медленного соединения. Я лично, вероятно, поставлю, QualityLevel=4 or 5потому что 0 qualitylevel(что 256 colors, я думаю) слишком скучно для меня.
Хуршид Алам
1
Ваш «Метод 2» идеально подходит для быстрого доступа к физическому дисплею удаленно без каких-либо специальных постоянных настроек. Мне нужно было добавить параметр -auth, как описано в сообщении об ошибке, когда я выполнил команду, но в остальном работает отлично. Благодарность!
Пьер
@gerky метод 3 будет NoMachine, в настоящее время самый быстрый и бесплатный (несмотря на то, что не с открытым исходным кодом), а также работает на Android
Aquarius Power
1
Для метода 2 мне пришлось использовать -auth guessи запустить его как root. Очень полезно, спасибо!
Боб Карлсон
9

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

Предполагая, что вы уже настроили 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. Connect

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

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

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

JTD
источник
Это кажется довольно полным, но где на хосте определен пользовательский порт 12345?
Джон Т
Я предполагаю, что вам нужно запустить команду ssh с клиента где-нибудь, что-то вроде: ssh -L 12345: localhost: 5900 user @ server_ip перед использованием удаленного клиента, как описано.
Джон Т
3

Я смог установить новую установку 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"
интегратора
источник
2
  1. Вы можете использовать SSH для запуска сеанса VNC
  2. Используйте Xnestс X11 forwording для удаленного запуска сеанса и перенаправления его на ваш текущий компьютер. (Я делаю это время от времени с моей страницей Пи)

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

  • Xnest :1 -ac &
  • тогда DISPLAY=:1 . /etc/X11/Xsession
скромный
источник
0

Как запустить сервер 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 и подключитесь к нему localhostдля адреса сервера VNC.

Futal
источник
Получил следующее. Похоже, все это предполагает, что вы уже вошли в консоль с графическим интерфейсом? No protocol specified Failed to connect to Mir: Failed to connect to server socket: No such file or directory Unable to init server: Could not connect: Connection refused Cannot open display: Run 'vino-server --help' to see a full list of available command line options
Водоросль
0

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

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

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

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

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

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

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

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

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

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

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

* Основные * вкладка *Продвинутая вкладка * SSH * вкладка

Ловушки.

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