Обновлено 06 апреля 2017
Кравченко Виктор

Raspberry Pi 3 — как настроить удаленный рабочий стол (устаревшая версия)

Радиотехника и электроника Цифровые устройства Умный дом Raspberry
01 Внимание:
Статья потеряла свою актуальность — вместо неё предлагается ознакомиться с её актуализированной версией
02 На заметку:
Автор настоятельно не рекомендует использовать более быстрые пути с использованием PuTTY и Xming X Server — они подойдут лишь в качестве удаленной командной строки — визуальная составляющая этих подходов оставляет желать лучшего. В данной статье показан один из самых вменяемых по отношению к результату способ удаленного подключения.
03

Метод, представленный в данной статье, позволит осуществлять ограниченный перечень действий, включающий работу в терминале. Он не позволит запускать полноэкранные графические приложения, вроде игр или медиаплееров. Тем не менее, он обеспечит полноценное окружение, такое же, как если бы оно было выведено напрямую на монитор.


Проверено — автор рекомендует:
http://ali.pub/wob8z Raspberry Pi 3 Model B (3 в 1)

Официальный корпус для Rasberry Pi 3 — http://ali.pub/kslog
Все одним комплектом — http://ali.pub/puqa9, http://ali.pub/wdsti
Как покупать на Aliexpress со скидкой от 5,5%

Видео-инструкция о покупке со скидками на Aliexpress
04

Удаленный рабочий стол

Рано или поздно, возникнет необходимость управлять компьютером Raspberry Pi удаленно, будь то сервер умного дома, центр сбора данных, либо мозги умного телевизора. И не придумано ещё более удобного способа, чем удаленный рабочий стол. В этом разделе будет показано, как настроить связку Raspberri Pi 3 + ПК на Windows, находящиеся в одной локальной сети таким образом, чтобы осуществлять администрирование Малинкой, сидя на своем привычном месте, так, как будто вместо ПК к монитору подключена Малинка.

05
Настройка на стороне Raspberry Pi 3
06

Первым делом обновляем операционку Raspbian:

07
1
2
sudo apt-get update sudo apt-get upgrade
08

Опцией update утилита apt-get запускает проверку в репозиториях новых версий программ, доступных для загрузки и обновляет кэш в системе. Опцией upgrade запускается обновление системы до последней версии. Как правило обе команды используются вместе. Можно использовать обе команды в одной строке, для последовательного выполнения обеих команд, для этого нужно разделить их точкой с запятой — sudo apt-get update; sudo apt-get upgrade или амперсандом — sudo apt-get update & sudo apt-get upgrade. Это весьма долгая процедура.

09 На заметку:
Для корректного исполнения важных команд используется комбинация && — следующая команда будет выполнена, только если предыдущая завершена без ошибок: sudo apt-get update && sudo apt-get dist-upgrade
10

Далее на Raspbery Pi 3 необходимо установить серверный компонент VNC-системы (Virtual Network Computing) для осуществления доступа к удаленному рабочему столу — в нашем случае будем устанавливать TightVNC Server. Он позволит подключаться к малинке различным VNC-клиентам (просмотрщикам, viewer). Также он будет осуществлять от имени пользователя, взаимодействие с системой, эмулируя нажатия кнопок и работу с мышью. Устанавливается очень просто:

11
1
sudo apt-get install tightvncserver
12

После установки сервера, необходимо настроить статический IP-адрес, для того чтобы VNC-клиент мог обращаться к устройству по конкретному адресу.

13

Следующими действиями, мы отменяем режим DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла, используется для автоматического динамического присвоения IP-адресов устройствам сети) и все параметры сети устанавливаем вручную.

14

Для этого сначала нужно выполнить команду (открыть файл /etc/dhcpcd.conf для редактирования в текстовом редакторе nano):

15
1
sudo nano /etc/dhcpcd.conf
16

И в самом конце файла под строкой nohook lookup-hostname указать данные своей сети и желаемый IP-адрес устройства (он должен быть свободен, чтобы не было конфликтов) в сети:

17
1
2
3
4
interface eth0 static ip_address=192.168.0.99 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 192.168.0.2
18 На заметку:
Обратите внимание, что настройка для Wi-Fi и Ethernet происходит раздельно. Для Wi-Fi в первой строке кода нужно указать interface wlan0.
19

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

20
21

Установленный IP-адрес можно всегда узнать командой (параметр -I чувствителен к регистру):

22
1
hostname -I
23

Запуск сервера осуществляется следующей командой:

24
1
tightvncserver :1 -geometry 1920x1080 -depth 24
25

В качестве параметров указаны дисплей 1, разрешение дисплея и глубина цвета. При первом запуске VNCServer запросит установить 2 пароля — основной для доступа и пароль только для просмотра. Второй пароль можно не устанавливать. Пароли устанавливаются последовательным нажатием клавиш и подтверждением клавишей Enter. На экране во время ввода пароля ничего не будет происходить. После запуска, система оповестит о том, что запуск прошел нормально:

26
27

На серверной стороне (Raspberry Pi 3) все готово...

28
Настройка на стороне Windows (на примере Windows 7)
29

Теперь необходимо настроить клиентскую сторону, в нашем случае Windows, но по сути она может быть любой, в т. ч. и Android. Скачиваем и запускаем VNC-клиент VNC Viewer и в меню File → New Connection создаем новое соединение:

30
31

В настройках соединения нужно указать только IP-адрес устройства к которому будет осуществлено подключение — он задавался в файле dhcpcd.conf. Через двоеточие указываем номер дисплея, заданный при запуске VNC-сервера. В поле name можно указать имя соединения, например, Raspberry Pi 3

32
33

Вновь созданное соединение появляется в главном окне:

34
35

Если все настройки сделаны корректно, то при двойном клике должно появиться окно с запросом пароля — он задавался при первом запуске VNC-сервера:

36
Можно установить галочку Remember Password — в этом случае вводить пароль больше не потребуется
Можно установить галочку Remember Password — в этом случае вводить пароль больше не потребуется
37

После ввода пароля появляется рабочий стол системы с заданными параметрами — разрешением и цветностью:

38
39

Убираем ошибку GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: An authentication agent already exists for the given subject

Очень вероятно, что при первом удаленном подключении на вновь отображенном рабочем столе будет висеть окно с ошибкой:

40
GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: An authentication agent already exists for the given subject
GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: An authentication agent already exists for the given subject
41

Окно закрывается по кнопке ОК, и на работу никак не влияет, но жутко раздражает. Для того чтобы это окно больше не всплывало, при подключении к VNC-серверу, нужно проделать несложные манипуляции.

42

Сначала в редакторе главного меню, нужно добавить пункт Default applications for LXSession:

43
44

Далее зайти по добавленному пункту меню Default applications for LXSession и из вкладки Core applications, удалить значение lxpolkit поля Polkit agent, оставив это поле пустым.

45
46

После этого перезагружаем систему, запускаем VNC-сервер и при подключении VNC-клиента такой ошибки уже не будет.

47

Борьба с Х-курсором в терминале

На этом месте, кого-то может все устроить и на этом все закончится, но некоторых будет смущать X-образный курсор, вместо привычной стрелки.

48
49

Для того, чтобы вернуть курсору стандартный стрелочный вид, вместо Х, необходимо в файле /home/pi/.vnc/xstartup (не путать с /etc/vnc/xstartup):

50
1
sudo nano /home/pi/.vnc/xstartup
51

добавить к строке xsetroot -solid grey параметры:

52
1
xsetroot -solid grey -cursor_name left_ptr
53

Перезагружаем и переподключаемся. Теперь результат такой, как надо:

54
55

Настройка автозапуска VNC-сервера, и включение его как службы

Внимательный читатель наверняка заметил одну неприятность — при перезагрузке Малинки для повторного подключения к ней, придется снова запускать TightVNC Server из терминала самой Малинки, что очень неудобно. Неудобство усугубляется необходимостью постоянно вводить дополнительные параметры. Устраним этот недостаток.

56
Способ №1, простой — создание файла в папке autostart
57

Заходим в папку .config/autostart (если папки нет, создать её можно средствами стандартного оконного менеджера):

58
1
cd .config/autostart
59

Создаем файл tightvnc.desktop:

60
1
sudo nano tightvnc.desktop
61

Следующего содержания:

62
1
2
3
4
5
[Desktop Entry] Type=Application Name=TightVNC Exec=vncserver :1 -geometry 1920x1080 -depth 24 StartupNotify=false
63

Сохраняем файл Ctrl+X, перезагружаем Малинку и снова подключаемся к ней из Windows, уже не запуская TightVNCServer в ручном режиме.

64
Способ №2, сложнее — с настройкой VNC-сервера как службы
65 На заметку:
Этот способ несовместим с предыдущим, поэтому нужно выбирать только один из них.
66

Настройка VNC-сервера как службы, может быть полезна для быстрого запуска и остановки сервера без ввода дополнительных параметров. Для этого нужно создать файл vncsrver в папке /etc/init.d/:

67
1
sudo nano /etc/init.d/vncserver
68

Следующего содержания:

69
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/sh ### BEGIN INIT INFO # Provides: VNC # Required-Start: $local_fs # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start or stop the VNC server ### END INIT INFO PATH="$PATH:/usr/bin/" export USER="pi" case "$1" in start) su ${USER} -c "/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24" echo "Started VNC server." ;; stop) su ${USER} -c "/usr/bin/vncserver -kill :1" echo "Stopped VNC server." ;; restart) $0 stop $0 start ;; *) echo "Usage: vncserver [start|stop]" >&2 exit 3 ;; esac :
70

Сохраняем файл Ctrl+X. Далее изменяем владельца на root (chown), назначаем права доступа на выполнение (chmod 755) и устанавливаем ссылку сценария инициализации (update-rc.d):

71
1
2
3
sudo chown root:root /etc/init.d/vncserver sudo chmod 755 /etc/init.d/vncserver sudo update-rc.d vncserver defaults
72

После перезагружаем компьютер. При загрузке компьютера, VNC-сервер запустится автоматически.

73

Теперь можно управлять VNC-сервером как службой, например, чтобы остановить его необходимо выполнить команду:

74
1
sudo service vncserver stop
75

А чтобы перезагрузить:

76
1
sudo service vncserver restart
77
Добавлено 06.04.2017

Копирование и вставка текста из приложений рабочего компьютера в приложения VNC-клиента

Работая в режиме уделенного рабочего стола, постоянно перемещаясь между сервером и клиентом, досадной и раздражающей, окажется невозможность копирования текста на рабочем компьютере (Windows) и вставки его на удаленном клиенте (Raspbian OS). Буферы обмена будут жить каждый своей обособленной жизнью. К сожалению, утилита vncconfig не включена в состав TightVNC-сервера, поэтому ею воспользоваться не получится. Зато можно установить другую специальную утилиту autocutsel.

78
1
sudo apt-get install autocutsel
79
80

После этого её можно запускать вручную командой autocutsel, а можно добавить в файл запуска VNC-сервера, чтобы утилита запускалась вместе с ним. Для этого в файл /home/pi/.vnc/xstartup нужно добавить строку autocutsel -s CLIPBOARD -fork:

81
В случае использования параметра PRIMARY вместо CLIPBOARD, копирование осуществляется только в одну сторону — от сервера (Raspbian OS) на клиент (Windows).
82

После перезагрузки утилита autocutsel будет запущена автоматически и операции копирования/вставки можно осуществлять между компьютерами, как если бы это был один компьютер.

83

В завершение

Когда все настроено и работает, перед началом экспериментов, автор рекомендует, при помощи программы Win32DiskImager, сделать образ настроенной системы, чтобы в случае неудачных опытов её всегда можно было развернуть с этой точки.

84
85

Похожие запросы:

  • Удалённый рабочий стол на Raspberry Pi. Настройка VNC.
  • Raspberry Pi – удаленный доступ к рабочему столу из Windows и Android
  • Настройка VNC на Raspberry Pi
  • Доступ к удаленному рабочему столу (VNC) Raspberry Pi / tightvnc
  • Desktop startup with VNC
  • TightVNC: remote mouse cursor is “X”
  • After setting up VNC, mouse pointer shows as «
  • Instructions how to change mouse cursor from «x» to arrow
  • Start a VNC Server on Raspbian on Boot
  • Auto start TightVncServer on Raspberry Pi
  • Running VNCServer at Startup
  • Setting up the Pi to Automatically Start a VNC Server Upon Bootup
  • Start VNC automatically
  • Autostart Raspberry pi VNC and server
  • Autorun other scripts when Rpi boots
  • Setting up VNC server on Raspberry Pi to autostart on reboot – Incoherent Musings
  • Automatically start VNC server on startup
  • How do I start VNC Server on boot?
  • Auto startup tightvncserver?
  • How to copy/paste text from remote system?
  • How to fix broken paste clipboard in VNC on Windows
  • Vncviewer clipboard operations like copy/cut+paste suddenly stops on linux
  • Copying and pasting text from/to VNC Server
  • Copy text between client and server; using the clipboard
comments powered by HyperComments