Pull to refresh

Гайд для непрограммистов – как быстро сделать себе VDI (или виртуальное рабочее место) в облаке на ОС Linux

Level of difficultyMedium
Reading time7 min
Views15K

Предыстория этого гайда: для тестирования версии нашего с партнерами ПО под Линукс необходимо было организовать много стендов с разнообразными дистрибутивами (преимущественно отечественными).

Самым простым способом, как мне показалось, являлась аренда виртуалок на облачном сервисе Яндекс Облако, так как там большое количество отечественных образов и все запускается «в пару кликов». За кажущейся простотой скрывалась проблема, с которой ко мне пришли партнеры: «Мы создали виртуалки в облаке, а как туда теперь войти в графическом режиме, как мы это делаем в VMWare/VirtualBox?».

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

Дисклеймер 1: Этот гайд не для программистов, не для админов, а для обычных пользователей, тестировщиков и прочих ребят, не считающих нужным (и возможным) изучать множество команд терминала для успешной жизни.

Дисклеймер 2: Вполне возможно, что на других облачных сервисах (например, у VK/MailRu Cloud) все работает чуть лучше и удобнее, но у меня нет ресурсов проверять еще и там.

Раздел 1 – Создаем и подключаемся к виртуальной машине

Глава 1 – Создание виртуальной машины

По началу в Яндекс.Облаке начинается все довольно красиво. Заходим в раздел «Виртуальные машины» (Compute Cloud), где есть очень красивая кнопка «Создать ВМ»

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

Неполный список дистрибутивов, доступных в Яндекс.Облаке
Неполный список дистрибутивов, доступных в Яндекс.Облаке

И вот представляем себе обычного пользователя, который, возможно, уже ставил себе Linux на виртуальную машину (или даже прямо на компьютер) – при установке ему выдавалось стандартное предложение ввести логин и пароль для входа в систему.

Разворачивая виртуальную машину в Яндекс.Облаке этого же пользователя ждет микроинфаркт, потому что возможности указать пароль своему пользователю просто нет. Зато есть вот такая настройка:

Господи, что такое SSH-ключ? Я никогда им не пользовался! Как быть? Куда звонить?

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

Глава 2 – Формирование SSH-ключа

А ларчик открывается просто, и нужные инструменты есть даже под Windows (была базовой ОС в нашем случае)

Сформировать ключ можно в командной строке (cmd) с использованием следующей команды с параметрами:

ssh-keygen -t rsa -b 2048

При выполнении команды будет предложено ввести имя файла для сохранения ключа. Если этого не сделать, ключ будет сохранен в файл id_rsa. Для повышения безопасности рекомендуется для каждого подключения (сервера) создавать отдельный ключ. Для примера можно использовать имя файла: habr, а для сохранения в «стандартную» папку .ssh необходимо указать ее в начале пути:

.ssh/habr

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

Если вдруг при создании SSH-ключа вы получите ошибку, которая говорит о том, что папки .ssh нет - просто создайте ее командой mkdir, ниже на картинке продемонстрирован пример:

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

ssh-rsa AAAAB3Nza … 66piyI1Mhye6qTKyM++v5j drazd@SOMEPCNAME

(начинается на ssh-rsa, заканчивается на имя вашего пользователя@имя компьютера)

Собственно, на этом все сложности с подключением и заканчиваются – содержимое pub файла нужно вставить в поле «SSH-ключ» на странице создания виртуальной машины.

Важно: При вставке из блокнота часто браузер стремится вставить перенос строки в конце SSH-ключа. Обязательно удалите этот перенос, из-за него подключение может не заработать

После создания виртуальной машины (может занимать от 1 до 5 минут) можно подключаться по публичному IP-адресу, который вы можете увидеть в консоли администрирования

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

На данный момент мы можем подключиться только по SSH (удаленное подключение к терминалу \ командной строке в Linux). Для подключения по SSH с использованием RSA-ключа необходимо указать через параметр -i адрес зашифрованного файла с RSA-ключом. Пример:

ssh -i %userprofile%\.ssh\habr habr@IP-адрес

При выполнении команды в первый раз по текущему адресу потребуется подтвердить согласие использовать выбранный RSA-ключ (написать yes). После этого необходимо ввести пароль от RSA-ключа, который был указан на предыдущем шаге при его генерации:

Итог подключения - у вас есть доступ к терминалу вашего виртуального рабочего места
Итог подключения - у вас есть доступ к терминалу вашего виртуального рабочего места

Раздел 2 – Установка графической оболочки и подключение к ней через RDP (mstsc)

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

Но поставить графическую оболочку мало - к ней просто так по SSH не подключишься, поэтому мы будем так же настраивать возможность подключения по RDP. Почему RDP, а не, например, VNC? Потому что мы идем по кратчайшему пути с минимальным сопротивлением. Возможность подключаться к RDP - стандартная функция ОС Windows, поэтому используем именно его.

Примечание: Мы будем использовать XRDP в самой простой конфигурации. В комментарии приглашаются умные ребята, которые расскажут как делать подключение по XRDP максимально безопасным. В моем кейсе особая безопасность не требовалась (виртуалки создавались на полдня и удалялись), но другим читателям может быть полезно.

Что еще важно учесть во всех случаях – так как мы настраивали подключение к системе через RSA-ключ, то у учетной записи нет пароля (или он нам просто неизвестен). В то же время вход по RDP в нашей конфигурации возможен только по паролю. Поэтому для исправления данной ситуации необходимо войти под учетной записью супер пользователя (sudo su) и выполнить команду смены пароля своего пользователя для его установки:

passwd habr

Установив пароль для своего пользователя, можно выйти из режима супер пользователя командой exit.

Astra Linux Common Edition 2.12, Special edition 1.7 «Воронеж»

По умолчанию в Astra Linux принято использовать графическое окружение fly. Устанавливается оно командами:

sudo apt-get update

sudo apt install fly-all-main

Для запуска окружения необходимо запустить соответствующий сервис:
sudo service fly-dm start

Установка XRDP для подключения к удаленному рабочему столу по протоколу RDP (mstsc):

sudo apt-get install xrdp

sudo systemctl restart xrdp

Для корректного подключения рекомендуется выполнить перезагрузку.

sudo reboot

Далее можно подключаться через средство mstsc и начинать работать

Готовое к работе виртуальное рабочее место с Astra Linux Special Edition 1.7 «Воронеж»
Готовое к работе виртуальное рабочее место с Astra Linux Special Edition 1.7 «Воронеж»

РедОС 7.3.* «Муром»

В РедОС можно использовать множество разных графических окружений, но в данном случае мы воспользуемся mate. Устанавливается оно командами:

sudo dnf repoquery

sudo dnf groupinstall mate

Установка XRDP для подключения к удаленному рабочему столу по протоколу RDP (mstsc):

sudo dnf install xrdp xorgxrdp

После установки xrdp необходимо выполнить ряд настроек под учетной записью su (выполните sudo su для переключения):

echo 'PREFERRED="$(type -p mate-session)"' >> /etc/sysconfig/desktop

sed -i 's/param=Xorg/param=\/usr\/libexec\/Xorg/' /etc/xrdp/sesman.ini

Выполнить редактирование файла /etc/xrdp/xrdp.ini

nano /etc/xrdp/xrdp.ini

С использованием сочетания клавиш Ctrl+W найти секцию [Xorg], раскомментируйте ее (удалить в начале символы решетки/хэштеги #).

С использованием сочетания клавиш Ctrl+W найти секцию [Xvnc], закомментировать ее (поставить в начале каждой строки символы решетки/хэштеги #)

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

Для сохранения изменений в текстовом терминальном редакторе nano нажмите сочетание клавиш Ctrl+O, вам предложат ввести новое имя файла - оставьте прежнее, нажмите Enter. Для выхода из редактора нажмите Ctrl+X.

После произведенных настроек включить сервис:

sudo systemctl enable xrdp --now

Для корректного подключения рекомендуется выполнить перезагрузку.

sudo reboot

Далее можно подключаться через средство mstsc и начинать работать

Примечание: Иногда после первого подключения у вас может не появится панель задач (нижняя полоса снизу с кнопкой "Пуск" и списком запущенных программ). Для решения проблемы - подключитесь вновь по ssh и снова выполните перезагрузку.

Добавлено: Если перезагрузка не помогает - необходимо нажать правой кнопкой мыши по непрогрузившейся панели и выбрать пункт "Сбросить все панели" (англ: "Reset all panels"), как правило это исправляет проблему. Если при нажатии правой кнопкой мыши контекстное меню не появляется - необходимо выполнить обновление системы с использованием команды sudo dnf update и повторить попытку после перезагрузки.

Пример подключения к РедОС с незагруженной панелью задач
Пример подключения к РедОС с незагруженной панелью задач

ALT Linux 10

По умолчанию в ALT Linux принято использовать графическое окружение KDE. Устанавливается оно командами:

sudo apt-get update

sudo apt-get install kde5 kf5-plasma-workspace kde5-network-manager-nm

Установка XRDP для подключения к удаленному рабочему столу по протоколу RDP (mstsc):

sudo apt-get install xrdp

sudo systemctl enable --now xrdp xrdp-sesman

sudo usermod -a -G tsusers habr

здесь tsusers - группа с доступом к удаленному рабочему столу, а habr - имя вашего пользователя

Для корректного подключения рекомендуется выполнить перезагрузку.

sudo reboot

Далее можно подключаться через средство mstsc и начинать работать

Готовое к работе виртуальное рабочее место с ALT Linux 10
Готовое к работе виртуальное рабочее место с ALT Linux 10

Debian 9, 10, 11

В Debian можно использовать множество разных графических окружений, но в данном случае мы воспользуемся xfce4. Устанавливается оно командами:

sudo apt-get update

sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Установка XRDP для подключения к удаленному рабочему столу по протоколу RDP (mstsc):

sudo apt-get install xrdp

sudo systemctl restart xrdp

Для корректного подключения рекомендуется выполнить перезагрузку.

sudo reboot

Далее можно подключаться через средство mstsc и начинать работать

 

Готовое к работе виртуальное рабочее место с Debian 11
Готовое к работе виртуальное рабочее место с Debian 11

Вместо заключения

Особо внимательные читатели данного гайда могут отметить, что здесь перечислены далеко не все доступные в Яндекс.Облаке дистрибутивы. И этот правда. Дело в том, что моим партнерам не требовались все эти дистрибутивы, а были нужны только те, которые есть в этом гайде. Тем не менее, я более чем уверен, что используя информацию отсюда – вы можете добиться тех же результатов в других дистрибутивах (а так же не только в Яндекс.Облаке).

Tags:
Hubs:
Total votes 10: ↑6 and ↓4+2
Comments11

Articles