Если первое, что необходимо освоить пользователю Raspberry Pi — это умение делать бэкапы, то следующим по важности и полезности пунктом идет организация удаленного доступа к микрокомпьютеру.
Единожды настроив удаленное управление Raspberry Pi, можно отсоединить от микрокомпьютера мышь, клавиатуру и монитор, да и вообще убрать «малину» с рабочего стола. А затем просто подключаться к ней со своего основного компьютера.
Содержание
Что нам понадобится
Для осуществления описываемых в этой статье действий понадобится:
- Raspberry Pi 3 Model B
- Локальная сеть
- Компьютер, смартфон или планшет
В этой статье я рассматриваю удаленное управление Raspberry Pi с компьютера под управлением Windows. Для устройств под управлением Linux и macOS также возможно осуществление всех описываемых здесь действий, отличаться будут только названия используемых программ.
В двух словах о SSH и VNC протоколах
SSH (Secure Shell) — сетевой протокол, позволяющий производить удаленное управление операционной системой через шифрованное соединение, а также передавать файлы, транслировать видео- и аудиопотоки и сжимать передаваемые данные на лету.
Говоря простым языком, SSH — это та штука, через которую можно запустить на компьютере терминал для выполнения консольных команд на другом компьютере.
VNC (Virtual Network Computing) — более продвинутый протокол, обеспечивающий удаленный доступ к рабочему столу другого компьютера по сети.
Для этого используются модули сервера и клиента. Серверный модуль запускается на компьютере, который должен управляться удаленно. Клиентский модуль запускается на компьютере, с которого будет осуществляться удаленное управление.
В отличие от SSH, по VNC предоставляется доступ не только к консоли, но ко всему компьютеру, включая графический интерфейс.
Доступ к Raspberry Pi 3 через SSH
Для получения доступа к Raspberry Pi 3 по протоколу SSH нужно открыть инструмент конфигурации raspi-config:
sudo raspi-config
Выбрать в нем Interfacing Options:
И включить SSH:
Все, больше с Raspberry Pi ничего делать не нужно.
Теперь скачиваем на свой основной компьютер (с которого будет осуществляться управление) бесплатный SSH-клиент PuTTY.
Запускаем его и вводим IP-адрес своей «малины»:
По умолчанию SSH работает на 22 порту, его менять не нужно.
После ввода IP-адреса нажимаем «Соединиться» и вот перед нами консоль нашего микрокомпьютера:
Остается ввести логин (по умолчанию pi) и пароль (по умолчанию raspberry, меняется через raspi-config) и можно пользоваться.
Когда привыкаешь к консоли, то становится понятно, что графический интерфейс в принципе не особо и нужен. Но если он все-таки нужен, то доступ к нему легко организовывается посредством протокола VNC.
Доступ к Raspberry Pi 3 через VNC
Для получения доступа к Raspberry Pi 3 по протоколу VNC нужно открыть инструмент конфигурации raspi-config:
sudo raspi-config
Выбрать в нем Interfacing Options:
И включить VNC:
После чего нужно установить сам VNC-сервер:
sudo apt-get update sudo apt-get install realvnc-vnc-server
И запустить его:
vncserver :1
Теперь посмотрим на каком порту он прописался:
netstat -pan|grep 'vnc'
Скорее всего это будет порт 5901 или 5902:
Теперь скачиваем на основной компьютер (с которого будет осуществляться управление) бесплатный VNC-клиент VNC Viewer.
Запускаем его:
Через File -> New connection создаем подключение к Raspberry Pi, прописывая ее IP-адрес и порт, на котором прописался VNC-сервер.
Порт нужно писать через два двоеточия подряд!
Если IP-адрес и порт указаны верно, то при подключении VNC-клиент запросит имя пользователя и пароль:
И после их ввода мы получаем полный доступ к интерфейсу Raspbian PIXEL:
Которым можно управлять при помощи мыши и клавиатуры.
Добавляем VNC-сервер в автозагрузку
Теперь пропишем запуск VNC-сервера в автозагрузку Raspbian чтобы не приходилось каждый раз вручную запускать его после перезагрузки.
Для этого перейдем в папку, где хранятся конфиги текущего пользователя:
cd /home/pi/.config
И посмотрим ее содержимое:
ls
Интересует наличие папки «autostart». Если ее нет — ее нужно создать, а если она уже есть — просто игнорируем этот шаг и идем дальше:
mkdir autostart
Переходим в только что созданную или уже существующую папку «autostart»:
cd autostart
Создаем новый файл:
nano realvnc.desktop
И прописываем в нем следующее:
[Desktop Entry] Type=Application Name=RealVNCServer Exec=vncserver :1 StartupNotify=false
Этот файл при каждой загрузке графического интерфейса будет выполнять команду «vncserver :1».
Перезагружаем «малину» для применения изменений:
sudo reboot
Если все прошло верно, то VNC-сервер будет запущен автоматически и к нему можно будет подключиться.
Подключение к рабочему столу Raspberry Pi с Android-устройства
Установив VNC-сервер на Raspberry Pi, можно управлять ею не только с компьютера, но и со смартфона или планшета на Android.
Для этого скачиваем VNC Viewer в Google Play и конфигурируем соединение так же, как на компьютере:
Подключаемся, вводим логин и пароль, попадаем в графический интерфейс Raspbian:
Свайпами по экрану перемещается курсор мыши, «клик левой кнопкой мыши» осуществляется тапом по экрану, «клик правой кнопкой мыши» осуществляется тапом двумя пальцами по экрану, ну а средней кнопкой можно «кликнуть» посредством тапа тремя пальцами одновременно.
Подключение к рабочему столу Raspberry Pi с iPhone/iPad
Посредством VNC можно подключаться к рабочему столу Raspberry Pi и с устройств под управлением iOS.
Скачиваем VNC Viewer в App Store и конфигурируем соединение так же, как на компьютере:
Подключаемся, вводим логин и пароль, попадаем в графический интерфейс Raspbian:
Методы управления тут те же самые, что и в случае использования Android-приложения. Те же свайпы, те же тапы.
Но вообще, управлять «малиной» с маленького экрана iPhone — то еще извращение :).
Заключение
Вот таким простым способом можно сделать эксплуатацию «малинки» еще более удобной, избавив себя от необходимости держать само устройство на рабочем столе и подключать клавиатуру и монитор для совершения любого действия с ней.
Если не рассматривать Raspberry Pi как альтернативу персональному компьютеру, а использовать ее в дополнение к имеющемуся парку компьютеров и гаджетов, то удаленного доступа к рабочему столу и терминалу достаточно для осуществления почти любых действий.
Raspberry Pi 3B (английская сборка)в интернет-магазине GearBest Raspberry Pi 3B (китайская сборка)в интернет-магазине GearBest
ЭТО vncserver :1 — нужно делать каждый раз при включении Малинки? Вчера все сделал, сегодня попытался зайти — никак, подключился терминалом, запустил, потом зашел… Не сильно удобно, особенно если со смартфона планируется заходить.
Дополнил статью пунктом про добавление VNC-сервера в автозагрузку.
Совсем забыл об этом во время ее написания, действительно, сам по себе vncserver после перезагрузки «малинки» не перезапускается.
Как я вижу по ip адресу, то дозвон идет по адресам в одной сети, а как стучаться к своему устройству совсем с другого подключения?
Чтобы иметь доступ из интернета, нужно пробросить порты на роутере и настроить динамический DNS на самой малине. Я не стал об этом писать, т.к. на мой взгляд такое решение небезопасно.
Более безопасный вариант — сделать Telegram-бота для управления малиной и залочить его на прием команд только со своего телеграмного ID. В будущем напишу пост про это.
Можно создать бесплатный аккаунт на RealVNC и подключаться из любого места, аналогично TeamViewer
Автозагрузка не работает :-(((
Уважаемый Дмитрий!
Подскажите пожалуйста как решить проблему масштаба окон интерфейса малины на экране клиента VNC- некоторые окна не масштабируются и нижние кнопки находятся за рамками экрана, доступа к ним нет.
Большое спасибо!
Андрей
Возможно поэкспериментировать с разрешением экрана в самом VNC? По умолчанию оно на минимуме, стоит повысить хотя бы до 1366×768.
Dmitry, спасибо Вам огромнейшее!!
Есть проблема…не работает автозагрузка я уже несколько переписывал загрузочный файл, может быть проблема в том,что он имеет расширение .desktop.save?
Все ок,нашел «косяк»,работает))
гавностатья. как сделать доступ по ссх, не имея монитора и клавиатуры?
Дмитрий, добрый день. После проделанных мной вышеописанных операций с автозагрузкой, система при загрузке стала выдавать: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: An authentication agent already exists for the given subject. Какой-то агент уже создан. Что бы это значило?
Dmitry Здравствуйте!
Запустил удаленный доступ. Задумывался удаленный доступ что-бы работал как Teamviewer.
То есть я работаю удаленно , но на основном рабочем столе все так-же происходило синхронно как на удаленном. Бился по всякому, в инете ничего не нашел.Большая просьба если не затруднит,возможно ли все таки это реализовать ?
C уважением Виктор
Dmitry, а как быть если у меня к малине подключен Wi-Fi адаптер, который работает в режиме мониторинга и он ругается на сетевой интерфейс, и работает нестабильно, пока принудительно не вырубишь сеть ? А если вырублю сетевой интерфейс, то, соответственно, не смогу управлять малиной удаленно. Есть какое-то решение или мне придется в любом случае чем-то жертвовать ?
Mr.Capone, при подключении со смартфона напишите следующие
Ваш_айпи::5900 , а не ::5901!
Dmitry, подскажите пожалуйста новичку, как и где задать пароль и логин на расбери или где их посмотреть, при установки ОС пароль не устанавливал.
Логин и пароль по умолчанию — pi / raspberry.
Пароль можно менять при помощи команды «sudo passwd» или через меню с настройками системы («sudo raspi-config»)
здравствуйте. большое спасибо за интересную и полезную статью.
У меня возник один вопрос, был бы очень признателен если подскажете.
вы написали о том, что в настройке putty мы должны написать ip address своей «малины». не подскажете пожалуйста как и откуда ее получить? заранее огромное спасибо!
Ifconfig eth0 если через кабель
Ifconfig wlan0 по ви-фи
в одном tutorial, я видел как один парень настраивает putty. и там, где вы написали ип аддресс, он написал просто raspberrypi.local. я еще новичек, пока много чего не понимаю.
Можно посмотреть IP при помощи команд «hostname -I» (I — большая) или «ifconfig».
Либо же посмотреть в веб-интерфейсе роутера список всех активных клиентов и найти там Raspberry Pi с присвоенным ей IP-адресом.
Подключаться по raspberry.local тоже вариант, но не всегда автоматическое присвоение имени работает корректно. Кроме того, если в локальной сети находится несколько «малинок», то они будут конфликтовать из-за этого имени и его необходимо будет перенастраивать для каждой.
Огромное спасибо! Второй вариант попробовал, однако не нашел там ip address с именем raspberry pi, попробую первый вариант. Спасибо большое!
Здравствуйте!
Извините, сначало набираю команду raspberry pi local и тому подобное, только потом, когда будет доступ к shell и подключаю монитор к ноутбук набираю hostname -I, Я правильно вас понял?
Большое спасибо, нашел ответ!
Огромное спасибо! Второй вариант попробовал, однако не нашел там ip address с именем raspberry pi, попробую первый вариант. Спасибо большое!
По какой-то причине на компьютере VNC клиент заработал лишь однажды. Дальше ни в какую, хотя на планшете все здорово работает. Что я только не писал: :1, :5900, :5901, ::1…
У меня всё чётко работает, спасибо Дмитрий.
Удаленное управление рабочим столом по VNC — это хорошо, если есть роутер. А вот что делать, если роутера нет? Если в нале есть планшет и RPi 4 и более ничего. Как тогда осуществить удаленное управление с Андроида на RPi 4?