«Нет ничего проще, чем завести себе удалённый компьютер. Трудности начинаются в тот момент, когда вы пытаетесь им воспользоваться.»
Настоящее руководство охватывает цепочку действий от момента регистрации у провайдера VDS/VPS до первого подключения по SSH под штатным пользователем, не root. Рассматривается универсальный случай: образ Ubuntu 24.04 LTS, провайдер — любой, панель — неважна.
Все действия последовательны. Пропускать шаги не рекомендуется — сервер, в отличие от кошки, обычно не приземляется на четыре лапы, если его столкнуть с лестницы.
Предположения: аккаунт у провайдера создан и оплачен, VDS развёрнут, доступен через веб-консоль провайдера (noVNC) с правами
root.
В панели управления провайдера создаётся новый сервер (иногда называется «инстанс», «дроплет», «машина»). При создании выбираются следующие параметры:
| Параметр | Значение |
|---|---|
| ОС | Ubuntu 24.04 LTS (чистый образ, не minimal) |
| Регион | Ближайший к географическому положению пользователей |
| Тариф | Определяется вашими потребностями |
Примечание: Образ должен быть чистым («stock»), а не «hardened», «pre-configured» или «panel-ready». Иначе поведение системы может отличаться от описанного в данном руководстве.
На этапе создания сервера провайдер обычно предлагает:
Загрузить свой SSH-публичный ключ;
Сгенерировать ключ за вас;
Ввести пароль для root.
Выберите: пароль для root. Ключи будут настроены в отдельном руководстве. Если интерфейс провайдера не позволяет выбрать «только пароль» — задайте и то, и другое. Пароль root потребуется для входа через веб-консоль (noVNC).
После нажатия кнопки «Создать» провайдер разворачивает сервер. Обычно это занимает от 30 секунд до 3 минут. После завершения сервер получает:
Публичный IP-адрес (например, 203.0.113.10);
Пароль root (выдан при создании, если вы задаёте его вручную, или прислан провайдером по электронной почте);
Доступ к веб-консоли (noVNC) — кнопка «Console», «Terminal» или «VNC» в панели провайдера.
«Создать сервер, — заметил Коровьев, вращая трёхпалой рукой колёсико мыши, — дело нехитрое. Нажал кнопку — и вот тебе кусок железа в Амстердаме, Берлине или на Луне. А уж что с ним делать дальше — это, гражданин, уже ваша головная боль.»
Веб-консоль (noVNC) — это виртуальный терминал, отображающийся прямо в браузере через панель управления провайдера. Он подключается непосредственно к виртуальной машине, минуя сеть и SSH. Это ваш «аварийный люк»: если вы сломали SSH, фаервол или вообще всё на свете — веб-консоль всё равно даст доступ.
Веб-консоль в панели провайдера не зависит от сетевого доступа и SSH. Она подключается к эмуляции монитора сервера так, как будто вы сидите перед ним с клавиатурой.
В панели управления провайдера найдите ваш сервер в списке и откройте его страницу.
Найдите ссылку или кнопку с названием Console, NoVNC, VNC, Web Terminal или Серверная консоль.
Откроется окно с чёрным экраном и строкой приглашения входа (или с графическим экраном входа, если сервер установлен с графической оболочкой).
Если видите строку приглашения:
psjsrv01 login:
Введите:
psjsrv01 login: root
Password: <пароль, заданный при создании>
Примечание: При вводе пароля в терминале символы не отображаются — ни звёздочками, ни точками, никак. Это не баг, это так задумано. Курсор не двигается. Это нормально. Набирайте пароль слепо и нажимайте Enter.
После успешного входа вы увидите приглашение командной строки:
root@psjsrv01:~#
Воланд поморщился:
«Вводить пароль при первом подключении — всё равно что стучаться в дверь собственного дома с криком „Я вернулся!" Дверь откроется. А кто ещё услышал — неизвестно. Но начинать с чего-то надо.»
SSH (Secure Shell) — криптографический сетевой протокол для удалённого управления операционной системой и безопасной передачи данных. Проще говоря: это способ попасть на сервер через терминал, не открывая веб-консоль, по сети.
Без SSH каждый раз придётся заходить через веб-консоль — медленно, неудобно, невозможно передать файлы. На сервере должен быть установлен и запущен SSH-сервер.
В Ubuntu за SSH-сервер отвечает пакет openssh-server.
Проверьте, работает ли служба sshd (SSH daemon — фоновый процесс, обрабатывающий SSH-подключения):
systemctl status sshd 2>/dev/null || systemctl status ssh
Примечание: В Ubuntu служба может называться
sshdилиssh. Один из двух вариантов найдётся.
Если вывод содержит строку Active: active (running), значит SSH уже работает. Переходите к Разделу 4.
Если вывод содержит Unit sshd.service could not be found или Unit ssh.service could not be found — сервер не имеет SSH-сервера. Необходимо установить его.
Обновите списки пакетов и установите openssh-server:
apt update
apt install -y openssh-server
После установки необходимо включить и запустить службу:
systemctl enable --now ssh
Флаг --now выполняет две операции за одну: enable (запуск при старте системы) и start (непосредственный запуск сейчас).
Теперь проверьте, что служба запущена:
systemctl status ssh
Ожидаемый вывод (ключевые строки):
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/usr/lib/systemd/system/ssh.service; enabled; preset: enabled)
Active: active (running)
Main PID: <число> (sshd)
...
Убедитесь, что SSH слушает порт 22 (стандартный):
ss -tlnp | grep :22
Ожидаемый вывод:
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=<N>,fd=<N>))
Это означает: sshd принимает подключения на всех сетевых интерфейсах (0.0.0.0) на порту 22.
Воланд, просматривая вывод
ss -tlnp:
«Двадцать второй порт. Стандартный, как ботинки в магазине. Открыт настежь, и каждый сканер в интернете знает об этом. Но пока что двери ещё не заперты — и ключи не сменены. Мы исправим это в своё время.»
uservpnrootЗапускать всё от root — это как ходить по канату без страховки: пока всё получается, кажется, что это безопасно. Но достаточно одной ошибки, и...
Создадим обычного пользователя с правами sudo — возможностью вызывать отдельные команды от имени root с предварительной проверкой подлинности.
Команды выполняются от root (вы сейчас вошли как root через веб-консоль):
useradd -m -s /bin/bash uservpn
passwd uservpn
Запросит пароль для
uservpn: введите надёжный пароль дважды. Этот пароль будет использоваться для входа через SSH.
Пояснение параметров:
| Флаг | Значение |
|---|---|
-m |
Создать домашнюю директорию /home/uservpn |
-s /bin/bash |
Установить Bash как оболочку по умолчанию |
sudo с паролемДобавьте пользователя в группу sudo:
usermod -aG sudo uservpn
Группа sudo в Ubuntu по умолчанию настроена так, что её члены могут выполнять команды от root с подтверждением своим паролем (не паролем root).
Пример проверки (от uservpn):
Переключитесь на нового пользователя:
su - uservpn
Проверьте sudo:
sudo whoami
Запросит пароль uservpn. Введите его. Ожидаемый вывод:
root
Это означает: sudo работает, uservpn может выполнять административные команды.
Вернитесь к root:
exit
Коровьев хмыкнул:
«Итак, у нас появился гражданин по имени uservpn — существо с правами, но и с ограничениями. Ровно то, что нужно, чтобы не натворить бед по неосторожности.»
Теперь, когда openssh-server работает, а пользователь создан, вы можете подключиться с вашего компьютера к серверу по сети.
Для этого нужен:
Публичный IP-адрес сервера (из панели провайдера);
Логин uservpn;
Пароль, заданный в разделе 4.2;
Порт 22 (по умолчанию).
На вашем компьютере откройте терминал и выполните:
ssh uservpn@<IP-АДРЕС-СЕРВЕРА>
Замените <IP-АДРЕС-СЕРВЕРА> на реальный адрес вашего сервера. Пример:
ssh uservpn@203.0.113.10
При первом подключении вы увидите сообщение:
The authenticity of host '203.0.113.10 (203.0.113.10)' can't be established.
При первом подключении к серверу вы увидите сообщение:
The authenticity of host '<IP-АДРЕС-СЕРВЕРА> (<IP-АДРЕС-СЕРВЕРА>)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Это не ошибка. SSH впервые «видит» этот сервер и предупреждает: «Я запомню его ключ, но вы должны подтвердить, что это тот самый сервер, а не подставной». Введите yes и нажмите Enter.
После подтверждения появится запрос пароля:
uservpn@203.0.113.10's password:
Введите пароль пользователя uservpn. После успешного входа вы увидите приглашение:
uservpn@psjsrv01:~$
Обратите внимание на знак $ — это означает, что вы вошли как обычный пользователь (не root, у которого знак #).
sudo через SSHПроверьте, что sudo работает при подключении через SSH (а не только через веб-консоль):
sudo whoami
Ожидаемый вывод:
root
Воланд, наблюдая за процессом входа по SSH:
«Пароль. По сети. Каждый пакет может быть перехвачен, каждый символ — прочитан. Мы пока так делаем, потому что начинать надо с чего-то простого. Но, уверяю вас, следующая глава будет гораздо интереснее.»
На данном этапе мы имеем:
| Что | Статус |
|---|---|
| Сервер развёрнут | ✅ |
| Веб-консоль (noVNC) доступна | ✅ |
| SSH-сервер работает (порт 22) | ✅ |
Пользователь uservpn создан |
✅ |
uservpn имеет sudo с паролем |
✅ |
Подключение по SSH под uservpn работает |
✅ |
Следующее руководство (в перспективе): настройка SSH — смена порта, SSH-ключи, отключение входа по паролю, отключение
root.
Конец документа. Читавшему — свободы, вошедшему — sudo, забывшему пароль — /etc/shadow ему в руки и удачи.