Настройка подключения к серверу Linux (Ubuntu) по SSH-ключу

Приветствую! В этой статье я расскажу о том, как настроить подключение к удаленному Ubuntu (Linux, Debian) серверу по SSH-ключу. Эта процедура обезопасит ваш сервер от взломов и прочих угроз. Итак, поехали.

Подготовка сервера

Для начала нам нужно развернуть наш виртуальный сервер (если у вас сервер уже имеется, то пропустите этот пункт). Все свои серверы я арендую на абузоустойчивом хостинг-провайдере Zomro, так как здесь самые низкие цены и вполне неплохое качество предоставляемых услуг. Вы же можете использовать любой другой хостинг, но я буду демонстрировать на примере Zomro.

Для начала зарегистрируйтесь на хостинге по ссылке. После регистрации войдите в личный кабинет хостинга, в левом меню выберите вкладку "Виртуальные серверы" и в открывшемся окне щелкните по кнопке "Заказать":

Аренда сервера на Zomro

Теперь нужно выбрать тарифный план, который подойдет под ваши требования и жмем на кнопку "Заказать":

Выбираем нужный тарифный план

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

Настройки параметров сервера

Сразу после оплаты состояние вашего сервера в панели управления изменится на "Обрабатывается (открытие)". Это значит, что на сервер в данный момент устанавливается операционная система и этот процесс занимает примерно 10-20 минут:

Открытие сервера на хостинге Zomro

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

Инструкция для работы с сервером на хостинге Zomro

Подключение к серверу

Если вы работаете на Windows (как и я), то для подключения к нашему удаленному серверу вам потребуется программа Putty. Скачиваем с официального сайта и устанавливаем на свой ПК.

После установки запускаем программу, в поле Host Name вводим наш IP-адрес (который получили в инструкции), порт оставляем 22 и жмем на кнопку "Open":

Подключение к серверу через Putty

Если при первом подключении у вас появилось подобное окно, то жмем "Да":

Putty Security Alert

Далее в открывшемся терминале вводим наш логин, который получили в инструкции (обычно это root) и жмем Enter на клавиатуре. После этого нужно ввести пароль. Для этого скопируйте его в буфер обмена и вставьте в терминале в нужном месте щелчком правой кнопки мыши.

Обратите внимание! При вставке пароля он не будет отображаться в терминале, потому что все пароли там скрываются. Просто вставьте его щелчком правой кнопкой мыши и нажмите на клавишу Enter на клавиатуре

Терминал Putty

Поздравлю! Вы подключились к серверу!

Настройка подключения с помощью SSH-ключа

Теперь наш сервер нужно обезопасить, а именно создать нового суперпользователя и отключить возможность подключения к серверу для root пользователя, отключить возможность подключения с помощью связки "логин - пароль" и включить возможность подключения по SSH-ключу.

Создание нового суперпользователя

Для начала создадим нового пользователя. Для этого воспользуемся командой:

sudo adduser newuser

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

ввод пароля для нового пользователя

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

подтверждение ввода пароля

Далее нам будет предложено ввести дополнительные данные о пользователе, такие как полное имя, номер телефона и другое. Эти данные можно не заполнять и пропустить нажатием клавиши Enter. После этого подтверждаем корректность заполнения данных вводом символа Y с последующим нажатием клавиши Enter:

подтверждение корректности заполнения данных

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

sudo usermod -aG sudo newuser

Осталось только проверить, что все прошло успешно. Для этого переключимся на только что созданного пользователя и попробуем выполнить от его имени команду whoami:

su newuser
sudo whoami

Результатом выполнения данных команд должен быть ответ сервера root. В таком случае все прошло успешно.

Генерация SSH-ключа

В корневой директории созданного пользователя (/home/newuser) нужно создать папку .ssh. Наверняка вы уже находитесь в этой директории. Проверить это можно с помощью ввода команды:

pwd

Если выдает другую директорию, то перейдем в нужную с помощью команды:

cd /home/newuser

Теперь создадим папку .ssh в этой директории с помощью команды:

mkdir .ssh

Проверить создание папки можно просмотрев структуру текущей директории командой:

ls -la

Установим права для этой папки:

chmod 700 .ssh/

Перейдем в эту папку:

cd .ssh

Создадим файл authorized_keys в этой папке:

touch authorized_keys

Установим права для этого файла:

chmod 600 authorized_keys

Теперь нужно сгенерировать SSH-ключ. Делается это с помощью программы PuTTYgen, которая установилась на ваш компьютер вместе с PuTTY. Находим программу с помощью поиска и запускаем ее:

Puttygen

Жмем на кнопку "Generate" и начинаем быстро и хаотично водить мышкой по экрану ПК и нажимать на клавиатуре произвольные клавиши. В результате мы получим ключ такого вида:

Сгенерированный SSH ключ

Копируем весь текст из поля "Public key for pasting into OpenSSH authorized_keys file". Для большей безопасности в поле "Key passphrase" введем и запомним свое ключевое слово или фразу, а в поле "Confirm passphrase" подтвердим ее. После этого жмем на кнопку "Save private key" и сохраним наш сгенерированный ключ. На выходе получаем файл с расширением ppk. Это и есть наш ключ.

Далее возвращаемся к терминалу и вводим команду:

cat >> authorized_keys << EOF

Вставляем ключ, который скопировали из поля PuTTYgen и жмем Enter. Вводим команду:

EOF

Отлично, мы скопировали и вставили наш ключ в файл authorized_keys. Можно проверить содержимое файла командой:

cat authorized_keys

Запрещаем авторизацию при помощи пароля и для пользователя с именем root

Откроем конфигурационный файл с помощью команды:

sudo nano /etc/ssh/sshd_config

Ищем в нем следующие строки и выставляем их следующим образом (если строка закомментирована знаком #, то удаляем этот знак):

PermitRootLogin No
PubkeyAutentefication Yes
PasswordAutentefication No

В самом конце файла прописываем нашего нового пользователя:

AllowUsers newuser

Сохраняем файл: комбинация клавиш Ctrl + X, ввод символа Y, нажатие клавиши Enter.

Перезагружаем SSH командой:

sudo service ssh restart

Отлично, теперь доступ на сервер осуществляется исключительно по SSH-ключу, сохраненному на нашем компьютере.

Подключение к серверу

Теперь при попытке авторизации по паролю или через root пользователя сервер выдаст ошибку:

Запрет авторизации

Для подключения к серверу в PuTTY в левом меню нужно выбрать вкладку SSH - Auth и загрузить наш SSH-ключ, сохраненный на ПК:

Подключение к серверу через ssh ключ

Далее возвращаемся во вкладку Session, вводим в поле "Host Name" наш IP-адрес и жмем на кнопку "Open". Можно также сохранить сессию, чтобы не вводить IP-адрес и не загружать ключ каждый раз:Подключение к серверу через ssh ключ

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

Успешное подключение с помощью SSH ключа

На этом у меня все! Постарался расписать все максимально подробно. Но если вдруг у вас остались какие-либо вопросы, то пишите сюда, я обязательно отвечу blush

Оставьте свой отзыв
Для публикации отзыва, пожалуйста, авторизуйтесь на сайте с помощью одной из доступных социальных сетей. Это действие займет несколько секунд Вашего времени и требуется для защиты сайта от накруток рейтингов и отзывов