Данная статья является частью серии статей: Виртуальная машина для pet-проектов
В статье описан пример создания ВМ в Cloud.ru. Основное отличие от официальной документации в том, что тут приводится несколько дополнительных настроек.
Создавать ВМ будет на базе Linux Ubuntu с публичным IP и доступом по SSH через логин и пароль.
Особенностью провайдера Cloud.ru является то, что для новых ВМ с новым публичным IP требуется дополнительная настройка сети, иначе не будет работать выход в интернет, в частности не будет работать даже такая привычная команда, как:
sudo apt update
Создание ВМ
Я предполагаю, что вы уже зарегистрировались в Cloud.ru
Cloud.ru новым пользователям предлагает бесплатную машину, но в этой статье мы будем создавать новую.
Создаем Публичный IP
Начнем не с создания ВМ, а с аренды IP
В лк Cloud.ru нажимаем «Evolution» — «Сеть» — «Публичные IP».
Нажимаем «Арендовать публичный IP».
Появится форма с параметрами для аренды. Можете изменить название на свое, а можете оставить все как есть. Тут только важно запомнить, в какой зоне доступности создается сеть, чтоб в этой же зоне создать ВМ.
Нажимаем «Арендовать».
Можете подождать, когда статус IP сменится с «Создаётся» на «Свободен».
Или сразу перейти к следующему шагу: создание ВМ.
Создаём ВМ
Нажимаем «Evolution» — «Инфраструктура» — «Виртуальные машины».
Нажимаем «Создать виртуальную машину».
Придумываем название машине и указываем ту же область доступности, что и у нашего IP из предыдущего шага.
Выбираем ОС Ubuntu 22.04, и для простых pet-проектов можно снизить стоимость ВМ, если изменить диск с SSD на HDD.
Также намеренно выбираем минимальные ресурсы для машины, чтобы снизить стоимость ВМ.
Нажимаем «Продолжить».
Переходим в пункт «Публичные IP» и выбираем наш IP.
Оставляем группу безопасности, которая дается по умолчанию. В зависимости от нужд конкретного проекта, эти группы нужно будет обновлять.
Метод аутентификации указываем «Пароль».
Придумываем логин и пароль для пользователя.
Ежемесячная стоимость ВМ обошлась в 329 руб. + 150 за IP (в табличке по неясной причине указано 0 руб.).
Ежедневно будет списываться примерно 15 рублей со счета за такую машину.
Создаём ВМ и дожидаемся, когда статус поменяется на «Запущена».
Работа в консоли
Пока единственный способ зайти на ВМ — это через консоль в ЛК. Но мы этот нюанс скоро исправим.
А пока у нас на выбор 2 варианта:
- Виртуальная консоль
- Серийная консоль.
Лично мне приятней работать в серийной консоли, но она пока баганутая.
Если не хотите багов, то выбор за виртуальной консолью, но тут не работает Ctrl+C, Ctrl+V... Придётся ручками всё прописывать.
Заходим в консоль и логинимся под user1.
- По умолчанию у меня стоит оболочка sh. Проверяем командой:
echo $0
Я поменяю оболочку на bash, в ней приятней работать
chsh -s /bin/bash
Вводим пароль от user1
ВАЖНО! Перезапускаем соединение
exit
и логинимся заново
Настраиваем доступ в сеть
Если вы, как и я, создали новую ВМ и публичный IP, то, скорее всего, у вас не будет работать доступ в интернет. Проверяем
ping -c 2 ya.ru
Если ping не проходит, то выполняем команды
sudo cloud-init clean
sudo cloud-init init
На всякий случай делаем ребут.
sudo reboot
Проверяем доступ в инет ещё раз
ping -c 2 ya.ru
Обновляем пакеты
sudo apt update && sudo apt upgrade -y
Если есть сетевые ошибки, значит, есть какая-то проблема с cloud-init. Тут либо сами разбираться, в чем проблема, в интернете есть ресурсы, по которым можно решить проблему, либо обратиться в поддержку, там должны помочь.
А можно радикальней поступить: удалить ВМ и IP и создать всё заново.
Создаём пользователя без root прав
Создадим отдельного пользователя, под которым будем логиниться через SSH, а user1 оставим для подключения через консоль.
sudo useradd -m -s /bin/bash user2
sudo passwd user2
Придумываем пароль для user2
Настраиваем подключение к ВМ по SSH
Я пользуюсь vim, т.к. мне так проще, другими редакторами пользоваться не привык. Vim считается сложным для пользователей редактором, поэтому можете редактировать файл как-то иначе.
- Правим SSH конфиг.
sudo vim /etc/ssh/sshd_config
Нажимаем на i, чтобы перейти в режим редактирования.
И двигаемся стрелками вверх и вниз по файлу.
- Отключаем дополнительный конфиг
Без этого отключения мы не сможем зайти по паролю
Меняем
Include /etc/ssh/sshd_config.d/*.conf
На
#Include /etc/ssh/sshd_config.d/*.conf
- Указываем параметр аутентификации по паролю.
Меняем
#PasswordAuthentication yes
На
PasswordAuthentication yes
- Запрещаем логиниться без указания пароля
Меняем
#PermitEmptyPasswords no
На
PermitEmptyPasswords no
- Отключаем вход по ключам
Меняем
#PubkeyAuthentication yes
На
PubkeyAuthentication no
- Запрещаем вход root
Меняем
#PermitRootLogin prohibit-password
На
PermitRootLogin no
- Делаем доступ по SSH только для user2
Добавить (например, в конец):
AllowUsers user2
user1 несмотря на то, что сепер пользователь, не будет иметь доступ по SSH
- Выходим из редактирования ESC и сохраняемся командой :wq!
- Проверяем синтаксис:
sudo sshd -t
- Если ошибок нет, перезапускаем SSH:
sudo systemctl restart sshd
Пробуем зайти по SSH
По SSH на виртуальную машину можно зайти
- С телефона через программы (и их аналоги):
- Termius
- JuiceSSH
- С компьютера через программы (и их аналоги):
- MobaXterm
- PuTTY
Я покажу подключение на примере MobaXterm
- Скачиваем, устанавливаем программу
- Открываем программу нажимаем Session
Можно входить иначе, но тут предложу самый короткий вариант
Нажимаем SSH — вводим IP сервера — нажимаем OK.
- Когда первый раз подключаешься к серверу, то появится окно, и в нём надо выбрать Accept.
- Вводим логин и пароль от user2.
- Если ввести логин и пароль от user1, то увидим сообщение: Access denied.
На этом всё, спасибо, что дочитали!