Kак я уже писал, в Ubuntu служба удаленного рабочего стола не
стартует, если к компьютеру не подключен монитор. Штатные возможности
для предоставления доступа к рабочему столу в Ubuntu имеются (System
> Preferences > Remote Desktop), но это будет работать до первой
загрузки компьютера без монитора. Логики маловато. Если компьютер под
управлением Ubuntu планируется превратить в домашний сервер, то
безусловно, он должен управляться через Remote Desktop и при этом
находиться где-нибудь в укромном месте, будучи подключенным лишь к
питанию и к сети.
Что-ж, проблема есть, будем решать! Погуглив, я нашел статью «HOWTO: Set up VNC server with resumable sessions»
в которой удаленный рабочий стол организовывается с помощью vnc4server.
Однако этот способ у меня отказывался работать в различных вариантах
даже после n-переустановок системы. Как и у многих пользователей,
отписавшихся в комментариях – сервис стартует, можно подключиться к
определенному порту, однако сессия пользователя не стартует – в итоге
видим серый экран с крестиком вместо курсора.
Значительно веселее заработал способ с помощью tightvncserver&xterm найденный здесь: «How to connect to your headless server with VNC/GUI goodness» Если доработать этот способ вот так: «Automatically start VNC server on startup» то получается очень даже ничего решение – служба удаленного рабочего стола стартует вместе с системой, можно настраивать размер окна, глубину цвета и т.п. Теперь обо всем подробнее.
Для начала заходим как root! (Вы ведь уже поставили SSH на свою Linux-коробочку? Если нет, то читаем «Basic SSH Setup On Ubuntu 10.04 Lucid Lynx Using OpenSSH Server» и делаем.) Зайти как root важно, так как в будущем установленные приложения будут запускаться от root при старте системы, если вы установите и настроите приложения используя просто sudo – все файлы окажутся вашими, и система не сможет их использовать. Чтобы зайти как root используем команду:
Создаем файл настроек:
И прописываем в него строку:
Потом нас спросят, хотим ли мы задать view-only пароль? Или задаем или нет, по вкусу.
VNC сервер скажет такое:
Теперь сканируем наш хост на открытые порты с 5900 до 5901. Открытым должен оказаться порт 5901 – к нему и нужно подключаться любым VNC клиентом. Обычно в VNC клиенте следует указать порт 5900 и номер дисплея – 1. Некоторые VNC клиенты по умолчанию используют порт 5900 и требуют только указания номера дисплея.

При подключении мы должны увидеть рабочий стол и root-сессию, типа такого:

Если необходимо остановить сессию, то используем команду:
Создаем файл vncserver в /etc/init.d:
В файле прописываем следующее (отредактируйте имя пользователя, размеры экрана, и название которое будет в заголовке окна, здесь это Atom):
Теперь пропишем скрипт в автозагрузку:
Значительно веселее заработал способ с помощью tightvncserver&xterm найденный здесь: «How to connect to your headless server with VNC/GUI goodness» Если доработать этот способ вот так: «Automatically start VNC server on startup» то получается очень даже ничего решение – служба удаленного рабочего стола стартует вместе с системой, можно настраивать размер окна, глубину цвета и т.п. Теперь обо всем подробнее.
Для начала заходим как root! (Вы ведь уже поставили SSH на свою Linux-коробочку? Если нет, то читаем «Basic SSH Setup On Ubuntu 10.04 Lucid Lynx Using OpenSSH Server» и делаем.) Зайти как root важно, так как в будущем установленные приложения будут запускаться от root при старте системы, если вы установите и настроите приложения используя просто sudo – все файлы окажутся вашими, и система не сможет их использовать. Чтобы зайти как root используем команду:
sudo -i
Теперь устанавливаем необходимые пакеты:apt-get install tightvncserver xfonts-base xfonts-75dpi twm xterm
Программа установки установит 3 новых пакета (остальные пакеты, как правило уже есть в системе): menu, tightvncserver, twmСоздаем файл настроек:
pico /etc/vnc.conf
(Все команды без sudo так как мы работаем от root)И прописываем в него строку:
$fontPath = "/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/misc/"
Запускаем VNC сервер с параметрами:vncserver -depth 8 -geometry 800x600 -nevershared -dontdisconnect
При первом запуске vnc-сервер попросить нас задать пароль, который
будет использоваться для доступа к удаленному рабочему столу. Здесь
нельзя использовать длинный пароль – обычно VNC пароль длиной до 8
символов.Потом нас спросят, хотим ли мы задать view-only пароль? Или задаем или нет, по вкусу.
VNC сервер скажет такое:
xauth: creating new authority file /root/.Xauthority
New 'X' desktop is Atom:1
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/Atom:1.log
это значит, что файл, в котором хранится пароль (это пока пароль к root-сессии) находится здесь: /root/.XauthorityТеперь сканируем наш хост на открытые порты с 5900 до 5901. Открытым должен оказаться порт 5901 – к нему и нужно подключаться любым VNC клиентом. Обычно в VNC клиенте следует указать порт 5900 и номер дисплея – 1. Некоторые VNC клиенты по умолчанию используют порт 5900 и требуют только указания номера дисплея.

При подключении мы должны увидеть рабочий стол и root-сессию, типа такого:

Если необходимо остановить сессию, то используем команду:
vncserver -kill :1
Так как удаленный рабочий стол автоматически загружается в
root-сессию, это не очень удобно – мы ведь хотим видеть именно свой
рабочий стол. Поэтому целесообразно настроить сервер так, чтобы
«экспортировался» рабочий стол определенного пользователя. Сделаем это
вместе со следующим шагом – чтобы удаленный рабочий стол стартовал при
загрузке системы.Создаем файл vncserver в /etc/init.d:
pico /etc/init.d/vncserver
(Здесь мы создаем файл при помощи текстового редактора pico. sudo не используем так как у нас root-сессия)В файле прописываем следующее (отредактируйте имя пользователя, размеры экрана, и название которое будет в заголовке окна, здесь это Atom):
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Default-Start: S
# Default-Stop: 0 6
### END INIT INFO
PATH="$PATH:/usr/X11R6/bin/"
# The Username:Group that will run VNC
export USER="andrey"
#${RUNAS}
# The display that VNC will use
DISPLAY="1"
# Color depth (between 8 and 32)
DEPTH="16"
# The Desktop geometry to use.
#GEOMETRY="x"
#GEOMETRY="800x600"
GEOMETRY="1024x768"
#GEOMETRY="1280x1024"
# The name that the VNC Desktop will have.
NAME="Atom"
OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. /lib/lsb/init-functions
case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;
stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;
restart)
$0 stop
$0 start
;;
esac
exit 0
И присваиваем файлу бит «executable»:chmod +x /etc/init.d/vncserver
Пробуем запустить сервис:/etc/init.d/vncserver start
Теперь уже, так как будет стартовать рабочий стол определенного
пользователя (а не root), система попросит нас ввести пароль для этой
сессии:root@Atom:~# /etc/init.d/vncserver start
* Starting vncserver for user 'andrey' on localhost:1...
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
xauth: creating new authority file /home/andrey/.Xauthority
New 'Atom' desktop is Atom:1
Creating default startup script /home/andrey/.vnc/xstartup
Starting applications specified in /home/andrey/.vnc/xstartup
Log file is /home/andrey/.vnc/Atom:1.log
Сканируем порты 5900-5901, открытым должен быть 5901, пробуем подключиться, должны увидеть рабочий стол выбранного пользователя.Теперь пропишем скрипт в автозагрузку:
update-rc.d vncserver defaults
Система покажет несколько предупреждений, это связано с тем, что
«runlevels» которые мы прописали в стартап-скрипте (старт S, стоп 0,6)
не соответствуют ранлевелам по умолчанию. Для тех кому это не дает
спокойно спать – разберитесь как модифицировать команду update-rc.d
vncserver defaults чтобы она использовала не уровни работы по умолчанию,
а брала их из скрипта. Так как разбираться с runlevels сейчас не
принципиально, оставим это как тему для отдельного материала.root@Atom:~# update-rc.d vncserver defaults
update-rc.d: warning: /etc/init.d/vncserver missing LSB keyword 'required-stop'
update-rc.d: warning: vncserver start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (S)
update-rc.d: warning: vncserver stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (0 6)
Adding system startup for /etc/init.d/vncserver ...
/etc/rc0.d/K20vncserver -> ../init.d/vncserver
/etc/rc1.d/K20vncserver -> ../init.d/vncserver
/etc/rc6.d/K20vncserver -> ../init.d/vncserver
/etc/rc2.d/S20vncserver -> ../init.d/vncserver
/etc/rc3.d/S20vncserver -> ../init.d/vncserver
/etc/rc4.d/S20vncserver -> ../init.d/vncserver
/etc/rc5.d/S20vncserver -> ../init.d/vncserver
Перезагружаемся и пробуем подключаться к рабочему столу! Обратите
внимание, что VNC пароль по умолчанию передается в небезопасном виде,
равно как и вводимые с клавиатуры данные. Поэтому не стоит использовать
этот способ для совсем удаленного администрирования домашнего сервера.
Только из локальной сети. Впрочем, можно настроить VNC через SSH
туннель, но это опять-таки тема для другой статьи. А еще можно
использовать удаленный рабочий стол через VPN, например, настроив VPN PPTP сервер – это безопасно.
Комментариев нет:
Отправить комментарий