Купили сервер. Что дальше?
Итак, вы приобрели сервер и получили заветное письмо.

Что делать дальше?
С вами GenSec и мы начинаем...
На просторах интернета много разных статей по первоначальной настройке серверов, однако актуальность некоторых стоит под вопросом. Большинство либо очень сложны для новичков, либо написаны в спешке, либо авторы никогда не запускали сервер. Я хочу затронуть неочевидные нюансы по доступу через ssh, смене порта, отключению пароля и т.д. Думаю, мне стоит начать цикл статей, где поделюсь своим опытом, проблемами, с которыми сталкивался, когда сам был новичком. Разберём на практике поэтапно, шаг за шагом, без профдеформации (некоторые упускают очевидные для них, но неочевидные для начинающих моменты). Надеюсь люди прислушаются и у них будет меньше возникать трудностей, когда они будут описывать свою проблему где-то в чате, на форуме или решать самостоятельно.
Важное - инструмент для работы
Независимо от того, сколько у вас серверов, или один, или несколько десятков, вам нужно выбрать инструмент для работы. Бесспорно, командная строка решает много проблем, но всех эта строка разная и не совсем удобная, особенно для начинающих. Кто-то использует Linux, кто-то Windows, кто-то MacOS. Поэтому постараюсь для большего охвата начинающих пользователей показать действия на Windows. (Ну а если у вас Linux, то вы и без меня наверное уже во всем разобрались, мои ненаглядные красноглазики)
Источник данных: StatCounter
Итак, выберем инструмент для комфортной работы. Я могу предложить несколько вариантов:
- MobaXterm. Что я вам и рекомендую в начале. Удобный и понятный интерфейс. В комплекте файловый менеджер. А как разберётесь, можете поменять инструмент под свои задачи на свой вкус и цвет. Закрытый исходный код, так что если любите открытое программное обеспечение (слезайте с windows😁, шучу - пункт 2.). Домашние версии в начале вам хватит за глаза. Дальнейшие действия буду показывать именно на ней.
- mRemoteNG. Открытый исходный код. Этим все сказано))
Переходим на сайт MobaXterm - Home Edition На странице будет предоставлен выбор между портативной версией (без установки в систему) и обычным установщиком.

Я выбираю обычный установщик - зеленая кнопка. После загрузки обязательно извлекаем из архива все файлы. Открываем папку которая появилась после распаковки и запускаем MobaXterm_installer_26.1.msi. Нажимаем Next, соглашаемся с условиями, думаю дальше все понятно, как с обычной установкой любых программ.
*Если вы получили ошибку при установке, вероятно вы не извлекли все файлы из архива. *
Запускаем. Выбираем светлую или темную тему. Для вашего удобства обучения выберу светлую тему, чтобы было все видно. Настало время подключиться к серверу. Нажимаем Session.

Вкладка SSH. Заполняем данные которые вы получили. У меня: IP - 13.37.133.7 Пользователь - root Указываете в поле Remote host - IP адрес, в поле Username - имя пользователя. Port - 22 (он всегда по умолчанию 22 для ssh) Нажимаете OK.

При первом подключении к серверу у вас появится окно.

Немного справки что это такое. При первом соединении с сервером ваш клиент сохраняет отпечаток (fingerprint) открытого ключа сервера и при последующих подключениях сравнивает его. Если интересно, можете посмотреть содержимое

Если ключ сервера изменится в будущем, то у вас появится предупреждение о том что ключи не совпадают, а значит о возможной угрозе, например mitm атаке.
Нажимаем Accept.
Дальше потребуется в терминале указать пароль от пользователя root. Копируем его и вставляем (я нажимаю на колесико мышки). Обратите внимание пароль не будет отображаться при вводе. У вас появится сообщение - Хотите ли вы сохранить пароль от пользователя root? Тут на ваше усмотрение.

Если нажмете Да, то MobaXterm попросит вас создать мастер пароль

Вас встретит красочное окно - Welcome to Ubuntu 22.04 Поздравляю, вы подключились к серверу!!!
Безопасность сервера
Для чего? Хочу напомнить, что пароль от пользователя находится у вас в открытом доступе в вашей электронной почте и в вашем аккаунте у хостера. Такое нам не надо, даже если вы не собираетесь его использовать в дальнейшем.
Поэтому изменим пароль root
Вводим в терминале passwd и указываем новый пароль. Запомните, пароль не будет отображаться при вводе, больше про это писать не буду.
Пароль установлен.

Чтобы не забыть, сохраняем пароль в менеджер паролей))) А если у вас его еще нет, то рекомендую обзавестись. Пользуясь случаем, если интересно, могу в следующей статье рассказать про менеджер паролей и приколюху c новомодным passkey и как обойтись без его облачного хранения (google, icloud). В чате serv.host укажите #gensec и напишите в сообщении что бы вам еще было интересно узнать.
Настроить доступ к серверу по ключу, вместо пароля
Вкладка Tools - MobaKeyGen (SSH key generator)

и... вас встретит окно, чертовски похоже на PuTTY (если вы еще достали эту софтину, а может быть еще до сих пор ей пользуетесь)

Настройки по умолчанию нам не подходят. Будем руководствоваться лучшими практиками.
- Выбираем EdDSA, будет выбрано Ed25519.

- Нажимаем Generate и возьнькаем мышкой)) по экрану пока не заполнится зеленая полоска и не появится чудо... Ваша пара ключей: открытый и закрытый ключ.

Открытый ключ - его мы разместим на сервере. В поле Key comment - можно указать комментарий, он ни на что не влияет, разве что в дальнейшем на ваше удобство работы с ключами, когда у вас будет несколько серверов, поэтому давайте осмысленные названия (вам что мало на компьютере Word (3).docx, Word (2).docx, Word (2).docx - копия)
В полях passphrase - можно дополнительно указать пароль. Тут на ваше усмотрение, все зависит от вашей модели угроз, если у вас чистый компьютер и нет доступа к нему посторонних лиц, можно и не указывать, лично я сейчас не буду. Закрытый ключ - на то и закрытый, чтобы его никто не видел))) Поэтому его нужно сохранить, он потребуется для доступа к серверу. Нажимаем Save private key. Указываем название файла и жмем Сохранить.

Осталось добавить ключ на сервер. Есть разные способы. Покажу один из них. Выделяете ваш открытый ключ, копируете.

В консоли пишите echo вставляете скопированный ключ и добавляете в конце /root/.ssh/authorized_keys

Вот код, значения замените на свои.
echo ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIdsdfMjkIorlQi2PqU6+IuB3Kv/7dK eddsa-key >> /root/.ssh/authorized_keys
Что делаете эта команда?
Производит запись вашего ключа в файл "/root/.ssh/authorized_keys"
Вы сами можете в этом убедится, если в меню слева нажмете несколько раз на .ssh и откроете файл authorized_keys

**Поздравляю. Вы добавили свой ключ на сервер. **
Давайте же попробуем теперь подключиться к серверу этим новым для вас способом. Откройте новую вкладку нажатием на +

Так как у нас уже есть заполненные данные сервера, мы просто скопируем сессию. Нажимаем ПКМ (правой кнопкой мыши) по нашей сессии - Duplicate session.

Появилась копия, ПКМ - Edit session.

В окне выбираем вкладку Advanced SSH settings, ставим галочку в поле Use private key и нажимаем на значок файла

Выбираем файл с нашим закрытым ключом, который мы сохраняли ранее. Нажимаем Открыть.

Проверяем что путь указан и нажимаем ОК

Нажимаем несколько раз ЛКМ по нашей новой сессии и...

Поздравляю, если видите у себя что-то похожее, у вас все получилось.

Теперь у вас есть 2 варианта для входа на сервер: 1 - через ssh по паролю 2 - через ssh по ключу Однако, лучше оставить что-то одно и это точно не вход по паролю.
Отключение входа через ssh по паролю.
Отключение входа через ssh по паролю для того, чтобы доступ к серверу мог осуществляться только по ключу. Держу пари, что возможно вы сталкивались с тем, что когда пытались отключить пароль, по инструкциям с первых страниц поисковика или нейросетки, где было написано отредактировать файл
/etc/ssh/sshd_config
указав
PasswordAuthentication no
то у вас ничего не получалось. А все дело в сloud-init. Вообще, сloud-init интересная вещь, но она выходит за рамки этой статьи, рекомендую ознакомится отдельно.
1.Не лезьте файл /etc/ssh/sshd_config !!! В нем куча параметров, которые могут быть непонятны вам как начинающим, так зачем себя грузить?! Сейчас покажу в чем цимус. Есть файл
50-cloud-init.conf
по пути
/etc/ssh/sshd_config.d/

Tак вот если его открыть, там вы увидите запись PasswordAuthentication yes. Все что указано в этом файле переназначает настройки файла /etc/ssh/sshd_config, и хоть вы 1000 раз указывайте PasswordAuthentication no доступ по паролю останется включенным!!
Поэтому и пишу вам не лезть редактировать в файл /etc/ssh/sshd_config.!!!

Как вы можете догадаться, вам достаточно именно в файле 50-cloud-init.conf
заменить yes на no, сохранить файл.

Выполнить команду
systemctl restart ssh

И вот только тогда, вход по паролю будет отключен.
Смена порта (с нюансами)
Желания сменить порт ssh у всех разные, поэтому не будем вдаваться в подробности, кому и зачем это нужно. Хочу вот порт поменять - и все тут!))) потому что могу))
И я вам в этом помогу. Открываем уже известный вам файл 50-cloud-init.conf по пути
/etc/ssh/sshd_config.d/
и просто на следующей строке пишем Port [номер порта]. Я вот хочу порт 1337, указываю Port 1337. Сохраняю файл.

Выполняю команду в терминале
systemctl restart ssh
Готово.

Теперь если вы закроете все открытые вкладки с терминалами...Больше не подключитесь к серверу, если не укажете новый порт. Давайте покажу как подключится по новому порту. Удалим сессию без ssh ключа. Она нам больше не нужна, т.к. мы отключили вход по паролю. ПКМ - Delete session.

Ну вот стало эргономичнее. Выбираем сессию - ПКМ - Edit session

Заменяем значение Port 22 на ваш порт. Я меняю на 1337. Нажимаем ОК.

Пробуем подключится. Прекрасно. Надеюсь у вас все получилось.
И все будет чудесно до одного момента - пока у вас Ubuntu 22.04.
Как только вы установите Ubuntu 24.04 и решите сменить порт по сохраненной инструкции, вас ждет разочарование, вы - новичок, то замучаетесь прыгать по сайтам из поисковика и читать комментарии.
Я покажу вам на примере. Установлю другую версию - Ubuntu 24.04. Вот так кстати выглядит предупреждение о том что отпечаток ключа сервера не совпадает, это после того как я выбрал переустановку с Ubuntu 22.04 на Ubuntu 24.04.

Делаю смену порта - все как по инструкции выше

systemctl restart ssh
и... у вас не получится подключится по новому порту!!! Получите вот таю ошибку.

Теперь расскажу как все исправить и вас это удивит. Делаете все по инструкции до этапа перезагрузки службы systemctl restart ssh, вместо этой команды вам понадобится 2 команды:
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket

И все у вас будет отлично.
Про выбор версии ОС на serv.host
На некоторых серверах почему-то нет возможности сразу выбрать нужную версию ОС. В выпадающем списке отображается только одна (ребята с serv.host надеюсь поправят)

Как исправить? После заказа сервера с версией, например, Ubuntu 20.04. На вкладке с Виртуальные серверы выбираете из меню 3 точки Перейти в панель.

Снова из меню 3 точки выбираете Переустановить ОС

Выбираете из списка необходимую версию.

Готово
Промокод
А тем кто дочитал до конца - промокод🎫 Если этот материал был вам полезен и вы узнали для себя что-то новое, поддержите меня, укажите промокод
promo7156
при заказе сервера. Это своего рода "ключ" для получения лучших условий размещения))) Это будет мотивировать меня писать для вас интересные статьи и рассказывать другие полезные приколюхи.
Как указать промокод?
При заказе сервера нажмите "в корзину".

Затем нажмите на корзину и выбирите "есть промокод"

Укажите промокод 🎫
promo7156
Применить.

🎆Поздравляю, вы сделали правильный выбор. Теперь вы под крылом serv.host с выгодными тарифами и оперативной поддержкой.
А если вы впервые на этом сайте, то регистрируйтесь по ссылке и вы получите отличные сервера по хорошей цене.
