Как настроить общий доступ к удаленному рабочему столу через SSH?
Есть ли способ просматривать (и контролировать) удаленный рабочий стол через SSH? У меня не будет физического доступа к удаленному хосту.
6 ответов
Способ 1:
Это может быть достигнуто с vino vnc server & remmina (оба поставляются по умолчанию с ubuntu; если не установить его, запустив sudo apt-get install remmina
). Затем запустите следующие команды с локального компьютера в окне терминала:
ssh -Y gman@remote
, Используйте надежную пересылку X11, иначе она не будет работатьvino-preferences
, Это откроет vino-предпочтения.Также нажмите
configure network automatically to accept connection
, Но не вводите пароль, его base64 закодировано. Затем нажмите закрыть. Затем запустите:sudo -s export DISPLAY=:0.0 xhost + /usr/lib/vino/vino-server &
Это запустит сервер vino.
Выйти с сервера:
xhost - Press CTRL+C twice exit exit
Тогда открой Реммина. выберите
vnc
по протоколу.Под
basic
вкладка положить адрес сервера вserver
поле.На вкладке SSH нажмите
enable ssh tunnel
, Подssh authentication
, возможноpassword
или жеpublic key
:Нажмите сохранить. А затем дважды щелкните имя соединения (домашний рабочий стол, как показано на рисунке), чтобы начать просмотр удаленного рабочего стола.
Способ 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
- Поставить галочку
Allow other users to view your desktop
- Поставить галочку
Allow other users to control your desktop
- Поставить галочку
Require the user to enter this password
- Введите трудно угаданную фразу-пароль
- близко
1б. Удаленно включить удаленное управление хост-машиной
Сделайте следующее на клиентском компьютере, заменив 123.123.12.3
с IP-адресом вашего хост-компьютера:
ssh -Y 123.123.12.3
- -Y, включает доверенную пересылку X11. Доверенные пересылки X11 не подвергаются элементам управления расширением X11 SECURITY.
vino-preferences
vino-preferences
также в Dash подDesktop Sharing
- Поставить галочку
Allow other users to view your desktop
- Поставить галочку
Allow other users to control your desktop
- Поставить галочку
Require the user to enter this password
- Введите трудно угаданную фразу-пароль
- близко
Создайте профиль клиента удаленного рабочего стола на вашем клиентском компьютере
Выполните следующие действия на клиентском компьютере:
remmina
- Реммина также в Dash под
Remmina Remote Desktop Client
Ctrl+N или Соединение> Новый
- Введите свой IP-адрес [123.123.12.3], где написано
Server
- Переключиться на
SSH
табуляция
- Поставить галочку
Enable SSH Tunnel
- Направьте ваш Desktop Client на ваш нестандартный порт SSH
- Установите свой
SSH Authentication
<username>
и режим - соединять
Просмотр и управление хост-машиной
На клиентской машине при запросе <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"
- Вы можете использовать SSH для запуска сеанса VNC
- использование
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