Есть ли способ просматривать (и управлять) удаленный рабочий стол через SSH? У меня не будет физического доступа к удаленной хост-машине.
Способ 1 :
Этого можно достичь с помощью vino vnc server и remmina (оба поставляются по умолчанию с ubuntu; если нет, установите его, запустив sudo apt-get install remmina
). Затем выполните следующие команды с локального компьютера в командной строке терминала:
ssh -Y gman@remote
. Используйте доверенную переадресацию X11, иначе она не будет работать-
vino-preferences
. Это откроет винные предпочтения. -
Также Нажмите
configure network automatically to accept connection
. Но не вводите никакого пароля, его кодировка base64. Затем нажмите кнопку Закрыть. Затем бегите:sudo -sexport DISPLAY=:0.0xhost +/usr/lib/vino/vino-server &
Это запустит сервер vino.
-
Выход из системы с сервера:
xhost -Press CTRL+C twiceexitexit
-
Затем откройте реммина. Выберите
vnc
в соответствии с протоколом.Под
basic
вкладка введите адрес сервера вserver
поле.На вкладке ssh нажмите
enable ssh tunnel
. Подssh authentication
, это может бытьpassword
илиpublic key
:Нажмите кнопку Сохранить. А затем дважды щелкните имя подключения (домашний рабочий стол, как показано на рисунке), чтобы начать просмотр удаленного рабочего стола.
Способ 2:
x11vnc
это простой VNC-сервер, и вам не придется возиться с настройками Gnome или 500 брандмауэрами, просто установите x11vnc
на всех ваших компьютерах (с помощью puppet или чего-то еще, что вы используете для массового контроля).
Затем с вашего локального компьютера запустите:
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
затем автоматически попытается найти нужный дисплей.
Источник: askubuntu
Обзор решения
Предполагая, что вы уже настроили OpenSSH Server
на вашем хост-компьютере сначала необходимо включить управление рабочим столом на вашем хост-компьютере. Если вы можете сначала включить управление рабочим столом на своем хост-компьютере локально, перейдите к разделу 1a. Если вам необходимо сначала включить удаленное управление рабочим столом на вашем хост-компьютере, перейдите к разделу 1b.
Затем создайте профиль клиента удаленного рабочего стола на своем клиентском компьютере, чтобы подключиться к хост-машине через SSH-туннель и в конечном итоге просматривать рабочий стол хост-машины и управлять им через SSH-туннель.
1a. Локально Включите удаленное управление хост-машиной
Выполните следующие действия на главном компьютере:
vino-preferences
-
vino-preferences
также в тире подDesktop Sharing
- Галочка
Allow other users to view your desktop
- Галочка
Allow other users to control your desktop
- Галочка
Require the user to enter this password
- Введите кодовую фразу, которую трудно угадать
- Закрывать
1b. Удаленно Включите дистанционное управление хост-машиной
Выполните следующие действия на клиентском компьютере, заменив 123.123.12.3
с IP-адресом вашего хост-компьютера:
ssh -Y 123.123.12.3
- -Y, Включает доверенную переадресацию X11. Доверенные пересылки X11 не подпадают под действие элементов управления расширением безопасности X11.
vino-preferences
-
vino-preferences
также в тире подDesktop Sharing
- Галочка
Allow other users to view your desktop
- Галочка
Allow other users to control your desktop
- Галочка
Require the user to enter this password
- Введите кодовую фразу, которую трудно угадать
- Закрывать
Создайте профиль клиента удаленного рабочего стола на вашем клиентском компьютере
Выполните следующие действия на клиентском компьютере:
remmina
- реммина также в тире под
Remmina Remote Desktop Client
Ctrl+N или Подключение > Новое
- Введите свой IP-адрес [123.123.12.3], где указано
Server
- Переключитесь на
SSH
вкладка
- Галочка
Enable SSH Tunnel
- Направьте свой настольный клиент на ваш нестандартный SSH-порт
- Установите свой
SSH Authentication
<username>
и режим - Подключить
Просмотр и управление Хост-машиной
На клиентском компьютере, когда запрашивается <username>
пароль пользователя, введите его, чтобы создать SSH-туннель. Когда вас попросят ввести пароль VNC, введите кодовую фразу, которую вы ранее ввели на хост-компьютере.
В случае успешного выполнения этого шага теперь вы должны просматривать рабочий стол хост-машины и управлять им со своего клиентского компьютера через SSH-туннель.
Я смог установить новую установку Ubuntu 16.04 с удаленного ssh-соединения с помощью следующего скрипта:
#!/bin/bashexport DISPLAY=:0read -e -p "Пароль VNC: " -i "ubuntu" passwordconf запись /org/gnome/рабочий стол/удаленный доступ/включен truedconf запись /org/gnome/рабочий стол/удаленный доступ/запрос включен falsedconf запись /org/gnome/рабочий стол/удаленный доступ/методы аутентификации "['vnc']"dconf write /org/gnome/desktop/remote-access/require-encryption falsedconf write /org/gnome/desktop/remote-access/vnc-password \"\'$(echo -n $password | base64)\'\"dconf дамп /org/gnome/рабочий стол/удаленный доступ/служба sudo lightdm перезапуск
Кавычки важны для любых настроек строки (одиночные тики внутри кавычек). Чтобы dconf мог записывать, ему необходим доступ к XWindows, поэтому необходима часть ОТОБРАЖЕНИЯ экспорта. Я думаю, что вам все равно нужно войти в систему на рабочем столе на самом компьютере Ubuntu, чтобы подключиться к VNC после этого.Команда dump предназначена только для подтверждения того, что все настройки были сохранены, на самом деле вам это не нужно.
При желании вы можете сделать это, если хотите, чтобы дисплей постоянно отображался:
dconf write /org/gnome/desktop/screensaver/с включенной блокировкой falsedconf write /org/gnome/desktop/screensaver/ubuntu-lock-on-suspend falsedconf write /org/gnome/desktop/session/idle-задержка "uint32 0"
- Вы можете использовать ssh для запуска сеанса vnc
- Воспользуйся
Xnest
с помощью X11 forwording можно удаленно запустить сеанс и переслать его на ваш текущий компьютер. (Я делаю это время от времени со своим pi) справочная страница
Я использую Xnest
вот так:
Xnest :1 -ac &
- затем
DISPLAY=:1 . /etc/X11/Xsession
Как запустить Vino server удаленно без переадресации X (только для командной строки)
Войдите на удаленный компьютер как пользователь, который будет использовать общий доступ к своему рабочему столу, и перенаправьте порт 5900 на тот же порт на localhost. С помощью PuTTY перенаправление устанавливается в Connection/SSH/Tunnels. С помощью командной строки используйте:
ssh -L 5900:localhost:5900 user@remote-computer
Устанавливать vino-server
если он еще не установлен. Например:
sudo apt install vino
Включить общий доступ к рабочему столу (соответствие отображаемому номеру в 1-й и 2-й строках):
echo $DISPLAYexport DISPLAY=:0dbus-launch --exit-with-session gsettings set org.gnome.Vino enabled truedbus-launch --exit-with-session gsettings set org.gnome.Vino prompt-enabled falsedbus-launch --exit-with-session gsettings set org.gnome.Vino require-encryption false/usr/lib/vino/vino-server
Запустите средство просмотра VNC и подключитесь к localhost
для адреса сервера VNC.
На серверном компьютере.
- Откройте "Настройки вина" в терминале или "Общий доступ к рабочему столу" с помощью dash.
На клиентском компьютере (откуда вы хотите управлять пользовательским интерфейсом сервера).
- Сохраните настройки, как показано на изображениях ниже (с изменениями в месте имени пользователя и IP-адреса).
Подводные камни.
- Когда я попытался установить настройки vino на сервере с удаленного компьютера с помощью SSH, они были изменены, но соединение не произошло. Я должен был сделать это непосредственно на серверной машине (не удаленно). Я не знаю причины такого поведения.
основываясь на ответе @Khurshid Alam, я представляю следующий фрагмент:
ssh $TARGETHOST -L 5900:localhost:5900 "x11vnc -localhost -display :0 -noxdamage" &; sleep 10 && vinagre localhost
Это одна команда, которая не требует никакого взаимодействия
Он создает SSH-туннель с переадресацией портов, запускает
x11vnc
достаточно безопасным способом и запускает и подключает средство просмотра VNCДля этого требуется x11vnc на целевом хосте, но никакой дополнительной настройки
- Для этого требуется vinagre на вашем компьютере, но вы можете тривиально изменить его для другого средства просмотра VNC