Vnc сервер на raspberry

Удаленное управление raspberry pi по VNC

Virtual Network Computing (VNC) — система удалённого доступа к рабочему столу компьютера, использующая протокол RFB (англ. Remote FrameBuffer , удалённый кадровый буфер). Управление осуществляется путём передачи нажатий клавиш на клавиатуре и движений мыши с одного компьютера на другой и ретрансляции содержимого экрана через компьютерную сеть.

Система VNC платформонезависима: VNC-клиент, называемый VNC viewer, запущенный на одной операционной системе, может подключаться к VNC-серверу, работающему на любой другой ОС. К одному VNC-серверу одновременно могут подключаться множественные клиенты.

Этот вариант очень удобен для подключения к raspberry pi, так как мы видим графический интерфейс и можем запускать графические приложения и управлять ими не используя монитор подключенный к малинке. Итак приступим:

Для начала нам нужно подключиться к raspberry pi по ssh. Как настроить ssh после установки ОС, описано в этой статье.

После подключения по ssh к малинке, нам нужно открыть инструмент конфигурации командой:

sudo raspi-config

Выбираем там пункт Interfacing Options:

Далее выбираем p3 VNC и соглашаемся с включением VNC:

После этого нужно установить сам VNC сервер, но в последних версиях он уже установлен. Все равно для полной картины попробуем его установить командами:

После скачивания и установки программы VNC viewer откроем ее и введем следующий адрес “ip adress::5901” выглядеть это будет следующим образом:

После этого у нас запросит логин и пароль

Логин будет pi пароль: raspberry – такие же как и на вход по ssh.

Вот и все, при удачном вводе учетных данных у нас появится рабочий стол ОС raspbian установленной на raspberry pi.

Все хорошо, но теперь после перезагрузки нашей raspberry pi VNC сервер отключится и подключиться заново не сможем пока опять не запустим его командой vncserver :1

Чтоб этого не делать каждый раз, нам нужно добавить запуск VNC server в автозагрузку.

Добавление VNC в автозагрузку:

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

Для этого в консоли ssh введем следующую команду: vncserver :1 мы были не в привилегированном режиме и запустили vncserver из под учетки pi/raspberry и следовательно эти же учетные данные у нас и запросил VNC сервер. А если бы мы запустили сервер командой sudo vncserver :1 то vnc сервер запустился бы под root учеткой. и логин и пароль pi/raspberry у нас бы не подошел для в хода в систему.

Так вот чтоб добавить автозагрузку VNC в систему нам нужно сначала установить пароль учетной записи root

Для этого введем команду:

sudo passwd root

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

sudo nano /etc/rc.local

В открывшемся окне перед exit 0 добавим строчку vncserver :1 , после этого нажимаем ctrl+X и Y для сохранения. Выглядит это следующим образом:

И перезагружаем raspberry pi. После перезагрузки у нас сам VNC сервер запустится, но при входе уже нужно будет вводить учетные данные root/пароль который вы установили выше.

Но это не совсем безопасно входить под “рутом” поэтому можно использовать следующий способ, а именно добавить запуск VNC сервера только под учетной записью “pi” для этого создадим папку и отредактируем файл командами:

mkdir /home/pi/.config/autostart

nano /home/pi/.config/autostart/vnc.desktop

и в этот пустой файл напишем следующие параметры:

После этого перезагружаем малинку командой sudo reboot и можем уже логиниться под учетными данными pi/raspberry только если вы выбираете этот способ, то в /etc/rc.local уберите строчку vncserver :1

На этом настройка VNC сервера закончена. Надеюсь кому-то поможет данная статья.

Источник

Raspberry Pi 3. Удаленное управление через SSH и VNC

Если первое, что необходимо освоить пользователю Raspberry Pi — это умение делать бэкапы, то следующим по важности и полезности пунктом идет организация удаленного доступа к микрокомпьютеру.

Единожды настроив удаленное управление Raspberry Pi, можно отсоединить от микрокомпьютера мышь, клавиатуру и монитор, да и вообще убрать «малину» с рабочего стола. А затем просто подключаться к ней со своего основного компьютера.

Что нам понадобится

Для осуществления описываемых в этой статье действий понадобится:

В этой статье я рассматриваю удаленное управление 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:

Выбрать в нем 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:

Выбрать в нем Interfacing Options:

И включить VNC:

После чего нужно установить сам VNC-сервер:

И запустить его:

Теперь посмотрим на каком порту он прописался:

Скорее всего это будет порт 5901 или 5902:

Теперь скачиваем на основной компьютер (с которого будет осуществляться управление) бесплатный VNC-клиент VNC Viewer.

Через File -> New connection создаем подключение к Raspberry Pi, прописывая ее IP-адрес и порт, на котором прописался VNC-сервер.

Порт нужно писать через два двоеточия подряд!

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

И после их ввода мы получаем полный доступ к интерфейсу Raspbian PIXEL:

Которым можно управлять при помощи мыши и клавиатуры.

Добавляем VNC-сервер в автозагрузку

Теперь пропишем запуск VNC-сервера в автозагрузку Raspbian чтобы не приходилось каждый раз вручную запускать его после перезагрузки.

Для этого перейдем в папку, где хранятся конфиги текущего пользователя:

И посмотрим ее содержимое:

Интересует наличие папки «autostart». Если ее нет — ее нужно создать, а если она уже есть — просто игнорируем этот шаг и идем дальше:

Переходим в только что созданную или уже существующую папку «autostart»:

Создаем новый файл:

И прописываем в нем следующее:

Этот файл при каждой загрузке графического интерфейса будет выполнять команду «vncserver :1».

Перезагружаем «малину» для применения изменений:

Если все прошло верно, то 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 как альтернативу персональному компьютеру, а использовать ее в дополнение к имеющемуся парку компьютеров и гаджетов, то удаленного доступа к рабочему столу и терминалу достаточно для осуществления почти любых действий.

Уведомления о статьях. 0% рекламы.

28 комментария на «Raspberry Pi 3. Удаленное управление через SSH и VNC»

ЭТО vncserver :1 — нужно делать каждый раз при включении Малинки? Вчера все сделал, сегодня попытался зайти — никак, подключился терминалом, запустил, потом зашел… Не сильно удобно, особенно если со смартфона планируется заходить.

Дополнил статью пунктом про добавление VNC-сервера в автозагрузку.
Совсем забыл об этом во время ее написания, действительно, сам по себе vncserver после перезагрузки «малинки» не перезапускается.

Как я вижу по ip адресу, то дозвон идет по адресам в одной сети, а как стучаться к своему устройству совсем с другого подключения?

Чтобы иметь доступ из интернета, нужно пробросить порты на роутере и настроить динамический DNS на самой малине. Я не стал об этом писать, т.к. на мой взгляд такое решение небезопасно.

Более безопасный вариант — сделать Telegram-бота для управления малиной и залочить его на прием команд только со своего телеграмного ID. В будущем напишу пост про это.

Можно создать бесплатный аккаунт на RealVNC и подключаться из любого места, аналогично TeamViewer

Источник

How to Make a VNC Server on Raspberry Pi

VNC for work OTG, a reactive cooling system, a LED heartbeat … and a BIG capacitor

What Is VNC?

VNC (Virtual Network Computing) is an easy-to-use method for having complete access to a graphical user interface (GUI) on any machine you can connect to. It’s flexible in terms of bandwidth, latency, and security. When you use VNC, it doesn’t matter if the machine is on your local network or another continent.

You can connect to your Pi from Windows, macOS, and Linux with equal ease and security. This is a one-size-fits-all setup for shared, remote computing. However, don’t run a big server when a micro server will suffice. Raspberry Pi computers are super-green, and you can help resist climate change!

Installation and Setup

No previous networking knowledge is required, but you should have a Pi ready. Anything from Raspberry Pi 2 B+ and up is fine; version 1 is just too slow for responsive VNC sessions.

Please refer to this for basic setup, and this for how to configure your Raspberry Pi to use a static IP.

A static IP is required only if you wish to connect to your home or lab while you’re out, and will ensure that the Pi doesn’t get another IP from DHCP, which would mess up the port forwarding.

The Raspberry Pi Linux images available here all provide you with an option for a RealVNC server. You should select the “Raspbian Buster with desktop” variant, and flash it to a microSD card, either with “dd” or your Pi, via a USB to microSD adapter:

where “X” is the relevant disk, e.g. /dev/sda if you’re using a Raspberry Pi with a USB to microSD adapter to flash. Be careful with this, as you don’t want to target the wrong disk. Use “lsblk” on your Pi/Linux system to discover which disk you want to write to.

An easier option is to use Etcher, which even handles unzipping the downloaded file for you. Follow this link for instructions.

Practical Examples

Once you’ve flashed your microSD card, you’re ready to boot your Pi. First, decide if you wish to run with a display, or headless.

One example of a headless application is if your Pi is inside a _ROBOT_, and you really would like to use a GUI editor to adjust your code while the system is live. If there’s no display attached, use “sudo raspi-config”
-> ‘3 Boot Options’
-> ‘B1 Desktop / CLI’
-> ‘B1 Console’ to disable the Xserver. You’ll save RAM and CPU resources doing this.

Connecting to a Raspberry Pi on your LAN

If you want to use your Pi with a display, connect an HDMI cable and USB keyboard and mouse.

Then, enter the command “sudo raspi-config” into your Pi’s terminal, and:

And …

And …

Hit “OK” and if asked to reboot, then exit raspi-config.

Now, enable the RealVNC server, again punch in the command “sudo raspi-config” in your Pi’s terminal:

And …

And …

Press “Yes” and exit raspi-config again. You’ll be prompted to reboot if system changes require it. Say yes to a reboot if prompted.

Once you’ve rebooted, you can connect with the username “pi” and your password. We’ll cover client software installation in a moment.

If you wish to run headless, add these lines to your “/etc/rc.local” file, above the line that says “exit 0.” If not, skip past this section.

Now, you can log in to your Pi with a VNC client. The best I’ve found is the one already bundled or installed by Raspbian: RealVNC Viewer.

It supplies clients (precompiled as binary packages) for macOS, Windows, and Linux, and many other systems, including Android and iPhone iOS. You can download your client here. There are no quirks on macOS or Windows; just double-click the downloaded software. On Ubuntu or a similar Debian-based distribution, download “DEB x64” for a modern machine, and use the terminal:

For other Linux systems, use RPM or standalone BIN, or generic script as appropriate. After the installation, simply type “vncviewer” and hit RETURN. You’ll be presented with a sophisticated GUI interface. At the top, you enter the address of your Pi, which you can discover by entering “hostname -I” into your Pi’s terminal. Another option is the free Fing app for iPhone iOS or Android.

The address is in the form IP:PORTl; for example, on this network, it’s 10.0.9.116:5900 for the “:0” instance on my Pi. A “:1” instance would use the port 5901 instead, so I’d enter 10.0.9.116:5901.

After you’ve entered the address, press ENTER, and wait a second. You’ll be prompted to authenticate and can set VNC Viewer to remember the login details. That’s it; you’ll be dropped directly into your Pi’s desktop environment.

Connecting to a Raspberry Pi from Internet/WAN

Connecting to your Pi over the internet is a bit more convoluted. You’ll need to set up port forwarding on your router, and you’ll also need to set your Pi to use a static IP address. Use the link in the Installation and Setup section to set a static IP; or, if your router provides this option, select the Pi in the list of network clients, and set a DHCP reservation. It’ll make sure the Pi always has the same IP address.

Next, port forward the external port 20202/tcp to your Pi’s port 22/tcp. No need to expose the VNC server; we’ll make sure your connection to your Pi is as secure as possible. RealVNC only offers 256-bit AES for enterprise users, but we don’t need to buy in just yet. SSH is awesome.

Copy the commands below into a terminal on your Pi:

Be sure to change your default password with “sudo raspi-config” or “passwd pi.” It really must NOT be “raspberry” if you’re opening SSH up to the world.

To be clear, ensure that you port forward FROM 20202 _TCP_ to your Pi’s _STATIC_ IP address, port 22 _TCP_.

Dynamic DNS?

Now you’re set and can connect to your Pi from work, or anywhere else you happen to be. How? What is the external address of the network your Pi is on?

Dynamic DNS makes that irrelevant by letting you use a “normal” name to connect. “Example.com” is an example of a “normal” name, and you don’t need to remember an IP address to connect to it. The IP address “93.184.216.34” might be trouble, since you’ve already got plenty of things to remember.

However, you could remember something such as “risingsun.csproject.org” easily. Let’s install a dynamic DNS client on your Pi, which will ensure that name always points to your Pi’s external network address.

Paste these commands into your Pi’s terminal:

You’ll need to choose a Dynamic DNS provider. If you want one that’s free, use FreeDNS. Sign up, and edit “/etc/inadyn.conf:” with the command sudo nano /etc/inadyn.conf . The relevant parameters are listed here for your convenience:

Once you’ve got all that info right, paste these commands into your Pi’s terminal:

To connect to your Pi, now do the following on your workstation or laptop (this applies to macOS and Linux; SSH tunneling on Windows is outside the scope of this article):

This creates an SSH tunnel for your VNC traffic. The SSH overhead isn’t a real CPU problem for models such as the Raspberry 2 B+ and later, so don’t worry.

To connect through the tunnel, enter the address “127.0.0.1:5900” into VNC Viewer, and connect via your local SSH tunnel to the VNC service on your Pi.

Enter your credentials if necessary, and you’re back in your Pi’s desktop environment. Never again will you need to worry if using shared Wi-Fi in a coffee shop or an airport.

You can of course also just SSH to your Pi, and start the VNC service ad-hoc, with the command:

This will persist until you kill it, with for example “pkill -9 -U pi vncserver.”

Improving Your VNC Experience

You can do a few things to boost VNC performance. One way is to reduce graphics to 16 bits or less, for a moderately comfortable user experience.

Latency is the real killer, and if you connect your Pi to your local network using Ethernet, this will help a lot.

If your connection isn’t fast enough (or if other users are using it at maximum capacity), you can discover this by installing speedtest-cli. Paste this into your terminal:

This outputs the following on my Pi:

The upload speed of 0.5Mbyte/s equals about 4Mbit/s, and is just enough for VNC at 24 bits, with a resolution of 1280×1024, barely.

On the GUI side of things, you should get rid of the default interface. It works fine for the old 512MB RAM Raspberry Pi’s, but not so much if you want a normal, intuitive interface.

The vanilla Raspberry Pi desktop consists largely of packages from the meta-packages “raspberrypi-ui-mods” and “lxde-common.” As a bonus, it tends to throw LXPolkit errors to VNC users.

If you have a 16-32GB microSD card and a Raspberry Pi 2 B+ (or later), I highly recommend installing the MATE desktop environment.

MATE will improve your overall user experience greatly!

Paste these commands into your Pi’s terminal:

If you installed MATE, you should now paste these lines into your

Then, reboot. This is particularly cool if you’ve got the new Raspberry Pi 4 B, with up to 4GB of RAM. You’ll never need to swap to your microSD card. Even on my Raspberry Pi 2 B+, MATE rarely causes me to swap. It’s just that good.

BONUS CONTENT

Add a Reactive Cooling System to your Pi

Cut a big round hole over the CPU

With Raspberry Pi 2 B+ and later models, heat becomes a problem. You can see your system temperature at any time with the command “vcgencmd measure_temp,” and if it reaches a certain threshold, 80C/176F, your Pi will clock itself down to avoid “undefined behavior” caused by overheating.

Thus, your 1.2GHz CPU may run at 600MHz for a while, and not go back to full speed until the heat has dissipated. The tiny heatsinks you’ve probably seen don’t really help if you’ve put the Pi in a case with limited airflow, and certainly not if you use four cores with 100 percent load on each. There’s a built-in config.txt parameter called gpio-fan for driving a fan (see “/boot/overlays/README”), but we don’t want to set that up every time we’ve reflashed our microSD card.

Instead, a dielectric temperature switch can be used. By attaching it to the CPU heatsink with electrically isolating, thermally conductive tape, it’ll close the circuit from the 5V rail to a 5V fan. I used a normally open type, which will close the circuit at 113 degrees Fahrenheit. Once it closes, the fan drives the heat away from the CPU. 0.75W makes for a decent mini-fan and is quite safe if we use a catch diode (ROHM BAT86 schottky) to prevent any spikes from reaching our 5V rail.

You’ll need these parts:

1x KSD9700 temperature switch, normal-open, 45C/113F https://www.aliexpress.com/item/10pcs-2500W-Temperature-control-switch-KSD9700-45-Degrees-Celsius-Normally-open-N-O-10A-250V-Thermal/32790498666.html
1x BAT86 schottky diode https://www.newark.com/nexperia/bat86/rectifier-diode-single-50-v-200/dp/96K6771
1x 5V fan https://www.banggood.com/5v-303010mm-3010-Cooling-Fan-with-2-Pin-Dupont-Wire-for-3D-Printer-Part-p-1421461.html?rmmds=buy&;cur_wbarehouse=CN
Thin stranded wire https://www.daburn.com/2671UltraFlexibleSub-MiniatureWire-U/LSTYLE15681692.aspx
1x 40V/2200uF capacitor, electrolytic https://www.newark.com/illinois-capacitor/228tta050m/aluminum-electrolytic-capacitor/dp/30K6693
Thermal adhesive tape https://www.adafruit.com/product/1468
2x Raspberry Pi heatsinks https://www.adafruit.com/product/3082

Make It!

Practically speaking, simply run a wire from a 5V GPIO pin (or void your warranty by soldering a line from the large “D5” diode near the microUSB port, see the red markings on the picture below) to one wire on the dielectric switch, and from its other wire to the fan’s positive terminal.

Connect a BAT86 schottky catch diode in forward bias from the fan’s negative terminal to its positive terminal, and then complete your circuit by connecting the fan’s negative terminal to GND. You can be creative with what constitutes ground; there’s GND _everywhere_. The Pi is quite sophisticated and can handle a tiny ground loop.

Or, be correct about this, and just connect it to a GPIO GND pin. The only tricky bit is to ensure the thermal adhesive tape is indeed very thermally conductive; use isopropyl alcohol to wipe the heatsink and switch beforehand. Once it is in place, make sure it stays in place with a big blob of hot glue.

Hot glue keeps it all in place

The KSD9700 is buried under hot glue and Kapton tape, to the right of the CPU in the image above. In operation, the 45C/113F switch will close when “vcgencmd measure_temp” returns 53C/127.4F, and continue to drive the fan until “vcgencmd measure_temp” returns 38C/100.4F, always. Even under 100 percent load of all four CPU cores, only the duration changes. This is because the switch itself must sink enough heat to reach 133F, and the CPU sensor reading is a bit ahead of that.

This type of switch will last for a decade and is a robust solution, independent of the “gpio-fan” parameter in config.txt. It’s also easy to make. Get your hot glue gun ready!

Add an LED Heartbeat Circuit to Your Pi

BOM

4x ROHM SLR343BC4TT32 3mm blue LEDs https://www.avnet.com/shop/us/products/rohm/slr343bc4tt32-3074457345627700657?CMP=EMA_ECIA_inventoryfeed_VSE?aka_re=1
1x 2N7000 N-channel MOSFET https://www.oddwires.com/2n7000-2n7000ta-small-signal-mosfet-10-pack/
4x 330 ohm resistors https://www.sparkfun.com/products/14490
Thin stranded wire https://www.daburn.com/2671UltraFlexibleSub-MiniatureWire-U/LSTYLE15681692.aspx
1x 4.7kOhm resistor https://www.adafruit.com/product/2783

Make It!

A small Pi implant board, ready to become a true blue HEARTBEAT. The omnidirectionality of the LEDs will be enhanced with hot glue and some sheets of film from a decompiled laptop LCD.

Closed up and good to boot! The anodized aluminum mesh prevents damage to the fan, at the cost of

40 percent less airflow.

Now, why is there a big 2200uF capacitor on this Pi? Yes, it’s connected directly to the 5V/GND GPIO pins.

The capacitor is there for the same reason these are present in subwoofers. Even if you have everything in order, using the official Raspberry Pi 5.25V SMPS power supply, and low-resistance wires, you can have problems if you suddenly surge in your current consumption. E.g. if your current needs to go from 1A to 2A quickly.

For me, this happens most commonly if I write to a USB harddisk, and do a lot of CPU work and network work at the same time. I get the dreaded under-voltage warning. It happens if you have

4.65V or less on the 5V pin, and is extremely annoying.

So, what if an SMPS power supply cannot rise to the occasional spike and deliver? You add a reservoir capacitor. The bigger the better, but the rule of thumb is 1000uF per A running to the system that needs a wee boost, hence 2200uF. The Raspberry Pi 4 B is rated for 3A, so you’ll want something like a 3300uF capacitor for this. You can go higher if you like. A supercap would surely improve things. It’s a plus they can also be used to spot-weld.

Источник

Adblock
detector