Как настроить VNC-сервер в Debian 8
Введение
VNC (Virtual Network Computing) — это система, которая позволяет пользователям подключаться и взаимодействовать с графическими рабочими столами удаленных компьютеров. Он может передавать обновления экрана, а также события клавиатуры и мыши по сети.
VNC полезен, когда вам нужна графическая среда рабочего стола для вашего сервера.
XFCE — это облегченная среда рабочего стола. Поскольку у него низкие требования к системным ресурсам и многие пользователи VNC знакомы с ним, в этом руководстве мы будем использовать XFCE. Однако вместо этого вы также можете использовать свою любимую среду рабочего стола, такую как Gnome или KDE.
В этом руководстве мы настроим сервер Debian 8, установим на него среду рабочего стола XFCE и подключим его через VNC. Кроме того, мы создадим сценарий запуска для VNC-сервера и защитим его через SSH.
Предпосылки
Пожалуйста, выполните следующие предварительные условия.
- Debian 8 (или 8.1) Droplet с корневым доступом. 512 МБ ОЗУ достаточно для запуска VNC и XFCE, но вам может понадобиться капля большего размера в зависимости от того, что вы планируете делать с графическим интерфейсом.
- Просмотрщик VNC (клиент) на вашем компьютере для подключения к вашему серверу. В этом руководстве мы будем использовать UltraVNC в Windows, но вы можете использовать и другие клиенты VNC. Скачать UltraVNC можно здесь. OS X поставляется со встроенным клиентом VNC под названием Screen Sharing.
- Клиент SSH для установки безопасного соединения через SSH. Мы будем использовать PuTTY для Windows. Вы можете скачать PuTTY здесь. В OS X просто используйте встроенное приложение Terminal
Шаг 1 — Установка VNC и XFCE
На этом этапе мы установим VNC Server и среду рабочего стола XFCE с дополнительным программным обеспечением и пакетом значков.
Обновите списки пакетов вашего сервера:
- apt-get update
Обновите сами пакеты:
- apt-get -y upgrade
Затем мы установим tightvncserver
и XFCE4 с некоторыми полезными надстройками и темой значков:
- apt-get install xfce4 xfce4-goodies gnome-icon-theme tightvncserver
По умолчанию браузер не установлен. Вы можете установить iceweasel
(это переименованная версия Mozilla Firefox для Debian), если хотите получить доступ к Интернету через соединение VNC:
- apt-get install iceweasel
Шаг 2 — Создание пользователя VNC
Мы создадим отдельного пользователя для VNC-соединений, чтобы обеспечить безопасность и порядок. Настоятельно рекомендуется использовать sudo
вместо использования пользователя root непосредственно для вашего сервера VNC.
Вы можете добавить пользователя с именем vnc в свою каплю Debian с помощью этой команды:
- adduser vnc
Дайте пароль новому пользователю. Вы можете пропустить все остальные вопросы, просто нажав ENTER
.
Установите sudo
, выполнив эту команду:
- apt-get install sudo
Добавьте нового пользователя vnc в группу sudo, которая предоставит этому пользователю права на выполнение корневых команд.
- gpasswd -a vnc sudo
Переключимся на пользователя vnc:
- su - vnc
Шаг 3 — Запуск и остановка вашего VNC-сервера
Как наш недавно созданный пользователь vnc, мы можем запустить сервер VNC и проверить наше соединение.
Запустите VNC-сервер:
- vncserver
Поскольку вы впервые запускаете сервер, вам будет предложено установить пароль, который клиенты будут использовать для подключения. Запомните этот пароль на потом! Вы также можете установить пароль только для просмотра, который позволит пользователям видеть экран, но не взаимодействовать с ним. Пароли должны быть 6-8 символов.
Вы получите уведомление о вашем отображаемом номере при запуске сервера.
xauth: file /home/vnc/.Xauthority does not exist
New 'X' desktop is vnc:1
Creating default startup script /home/vnc/.vnc/xstartup
Starting applications specified in /home/vnc/.vnc/xstartup
Log file is /home/vnc/.vnc/vnc:1.log
По умолчанию соединения VNC обслуживаются на портах, начинающихся с 5901
для первого дисплея. Ваш второй дисплей будет обслуживаться через порт 5902
и т. д.
Не останавливайте сервер сейчас, но мы включаем команду остановки для справки.
Используйте эту команду, чтобы остановить сервер VNC на дисплее 1
(и порте 5901
):
- vncserver -kill :1
:1
— это номер дисплея, который вы хотите убить.
Вы можете запустить VNC-сервер вручную, когда захотите снова подключиться. Позже мы создадим службу для VNC-сервера.
Шаг 4 — Подключение из клиента VNC
Теперь вы можете подключиться к вашему VNC-серверу. Откройте локальный клиент VNC, который зависит от вашей операционной системы.
В Windows вы можете использовать UltraVNC здесь.
В OS X вы можете использовать встроенное приложение Screen Sharing или получить доступ к этому приложению через Safari. В Safari вы можете ввести vnc://your_server_ip:5901
В качестве адреса VNC-сервера введите your_server_ip:5901 и используйте пароль, который вы только что установили для своего VNC-подключения.
Вы можете нажать кнопку «Использовать конфигурацию по умолчанию» на экране приветствия XFCE, чтобы легко начать работу:
Теперь вы можете использовать свой удаленный рабочий стол!
Шаг 5 — Создание службы systemd для автоматического запуска сервера VNC
В этом разделе мы добавим VNC-сервер в systemd. Использование службы может быть полезно для запуска и остановки вашего VNC-сервера, а также для его автоматического запуска при перезагрузке вашей капли.
Во-первых, давайте убьем текущий экземпляр:
- vncserver -kill :1
Создайте простой скрипт для легкого управления и настройки нашего VNC-сервера:
Как пользователь vnc или другого пользователя sudo создайте файл сценария с помощью своего любимого текстового редактора.
- sudo nano /usr/local/bin/myvncserver
Точно добавьте это содержимое. Этот сценарий предоставляет VNC несколько параметров для запуска.
#!/bin/bash
PATH="$PATH:/usr/bin/"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
case "$1" in
start)
/usr/bin/vncserver ${OPTIONS}
;;
stop)
/usr/bin/vncserver -kill :${DISPLAY}
;;
restart)
$0 stop
$0 start
;;
esac
exit 0
Вы можете изменить сценарий, чтобы изменить глубину цвета или разрешение вашего соединения VNC.
Если вы используете nano, вы можете сохранить файл с помощью CTRL+O
и выйти с помощью CTRL+X
.
Сделайте исполняемый файл:
- sudo chmod +x /usr/local/bin/myvncserver
Наш скрипт поможет нам легко изменять настройки и запускать/останавливать VNC-сервер.
При желании вы можете вызвать сценарий вручную, чтобы запустить/остановить VNC-сервер на порту 5901 с желаемой конфигурацией.
- sudo /usr/local/bin/myvncserver start
- sudo /usr/local/bin/myvncserver stop
- sudo /usr/local/bin/myvncserver restart
Теперь мы можем создать файл модуля для нашего сервиса. Файлы модулей используются для описания служб и сообщают компьютеру, что делать, чтобы запустить/остановить или перезапустить службу.
- sudo nano /lib/systemd/system/myvncserver.service
Скопируйте эти команды в служебный файл. Наш сервис просто вызовет сценарий запуска выше с пользователем vnc.
[Unit]
Description=Manage VNC Server on this droplet
[Service]
Type=forking
ExecStart=/usr/local/bin/myvncserver start
ExecStop=/usr/local/bin/myvncserver stop
ExecReload=/usr/local/bin/myvncserver restart
User=vnc
[Install]
WantedBy=multi-user.target
Теперь мы можем перезагрузить systemctl
и включить наш сервис:
- sudo systemctl daemon-reload
- sudo systemctl enable myvncserver.service
Вы включили новую услугу. Используйте эти команды для запуска, остановки или перезапуска службы с помощью команды systemctl
:
- sudo systemctl start myvncserver.service
- sudo systemctl stop myvncserver.service
- sudo systemctl restart myvncserver.service
Теперь вы можете запустить VNC-сервер в качестве службы на своем дроплете.
Шаг 6 — Защита вашего VNC-сервера с помощью туннелирования SSH
По умолчанию соединения VNC не используют шифрование, поэтому для защиты сеанса рекомендуется использовать туннель SSH.
Для этого мы позволим нашему VNC-серверу работать только на локальном хосте.
Сначала остановите сервер VNC:
- sudo systemctl stop myvncserver.service
Отредактируйте сценарий конфигурации:
- sudo nano /usr/local/bin/myvncserver
Измените эту строку:
. . .
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. . .
Замените его на:
. . .
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
. . .
Перезапустите VNC-сервер:
- sudo systemctl start myvncserver.service
Теперь вы не можете напрямую подключиться к своему VNC-серверу с удаленного компьютера.
Окна:
Мы будем использовать PuTTY для создания туннеля SSH, а затем подключимся через созданный нами туннель.
Откройте ПуТТИ.
В меню слева перейдите в раздел Connection->SSH->Tunnels.
В разделе «Добавить новый перенаправляемый порт» введите 5901
в качестве порта источника и localhost:5901
в качестве порта назначения.
Нажмите кнопку «Добавить».
Теперь вы можете перейти в раздел Session в левом меню.
Введите IP-адрес вашей капли в поле Имя хоста (или IP-адрес).
Нажмите кнопку Открыть, чтобы подключиться. Вы также можете сохранить эти параметры для последующего использования.
Войдите под своим пользователем vnc.
Держите окно PuTTY открытым, пока вы устанавливаете соединение VNC.
Теперь вы можете использовать программу просмотра VNC как обычно. Просто введите localhost::5901 в качестве адреса и сохраните ваше SSH-соединение в фоновом режиме.
ОС Х:
Чтобы установить туннель SSH, используйте следующую строку в Терминале:
ssh vnc@your_server_ip -L 5901:localhost:5901
Аутентифицируйтесь как обычно для пользователя vnc для SSH. Затем в приложении «Общий экран» используйте localhost:5901.
Заключение
Теперь вы можете использовать общий удаленный рабочий стол на сервере Debian 8.
Используйте его, чтобы настроить свой сервер или поделиться своим экраном с другими.