Приветствую! В этой статье я расскажу о том, как настроить подключение к удаленному Ubuntu (Linux, Debian) серверу по SSH-ключу. Эта процедура обезопасит ваш сервер от взломов и прочих угроз. Итак, поехали.
Для начала нам нужно развернуть наш виртуальный сервер (если у вас сервер уже имеется, то пропустите этот пункт). Все свои серверы я арендую на абузоустойчивом хостинг-провайдере Zomro, так как здесь самые низкие цены и вполне неплохое качество предоставляемых услуг. Вы же можете использовать любой другой хостинг, но я буду демонстрировать на примере Zomro.
Для начала зарегистрируйтесь на хостинге по ссылке. После регистрации войдите в личный кабинет хостинга, в левом меню выберите вкладку "Виртуальные серверы" и в открывшемся окне щелкните по кнопке "Заказать":
Теперь нужно выбрать тарифный план, который подойдет под ваши требования и жмем на кнопку "Заказать":
В открывшемся окне выбираем режим автопродления, вводим доменное имя (если домена нет, то оставьте поле пустым или введите произвольный домен), выбираем операционную систему (я выбрал Ubuntu 18.04), лицензию на панель управления выбирайте на свое усмотрение (я выбрал без лицензии, так как разворачивал сервер под Python). После выставления всех параметров переходим к оплате хостинга нажатием на кнопку "В корзину" и оплачиваем сервер любым удобным способом:
Сразу после оплаты состояние вашего сервера в панели управления изменится на "Обрабатывается (открытие)". Это значит, что на сервер в данный момент устанавливается операционная система и этот процесс занимает примерно 10-20 минут:
После завершения установки вы получите уведомление на свою электронную почту, указанную при регистрации на хостинге. Теперь переходим во вкладку "Инструкция" и получаем все необходимые данные для подключения к нашему серверу:
Если вы работаете на Windows (как и я), то для подключения к нашему удаленному серверу вам потребуется программа Putty. Скачиваем с официального сайта и устанавливаем на свой ПК.
После установки запускаем программу, в поле Host Name вводим наш IP-адрес (который получили в инструкции), порт оставляем 22 и жмем на кнопку "Open":
Если при первом подключении у вас появилось подобное окно, то жмем "Да":
Далее в открывшемся терминале вводим наш логин, который получили в инструкции (обычно это root) и жмем Enter на клавиатуре. После этого нужно ввести пароль. Для этого скопируйте его в буфер обмена и вставьте в терминале в нужном месте щелчком правой кнопки мыши.
Поздравлю! Вы подключились к серверу!
Теперь наш сервер нужно обезопасить, а именно создать нового суперпользователя и отключить возможность подключения к серверу для root пользователя, отключить возможность подключения с помощью связки "логин - пароль" и включить возможность подключения по SSH-ключу.
Для начала создадим нового пользователя. Для этого воспользуемся командой:
sudo adduser newuser
Newuser - имя пользователя, выбирайте сами на свое усмотрение. После ввода команды запускается процесс создания нового пользователя, где вам будет предложено создать для него пароль:
Не забывайте, что в Линуксе ввод пароля не отображается. Подтверждаем пароль:
Далее нам будет предложено ввести дополнительные данные о пользователе, такие как полное имя, номер телефона и другое. Эти данные можно не заполнять и пропустить нажатием клавиши Enter. После этого подтверждаем корректность заполнения данных вводом символа Y с последующим нажатием клавиши Enter:
Отлично, новый пользователь создан. Теперь нужно дать ему права суперпользователя. Для этого в терминале вводим команду:
sudo usermod -aG sudo newuser
Осталось только проверить, что все прошло успешно. Для этого переключимся на только что созданного пользователя и попробуем выполнить от его имени команду whoami:
su newuser
sudo whoami
Результатом выполнения данных команд должен быть ответ сервера root. В таком случае все прошло успешно.
В корневой директории созданного пользователя (/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. Находим программу с помощью поиска и запускаем ее:
Жмем на кнопку "Generate" и начинаем быстро и хаотично водить мышкой по экрану ПК и нажимать на клавиатуре произвольные клавиши. В результате мы получим ключ такого вида:
Копируем весь текст из поля "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
Откроем конфигурационный файл с помощью команды:
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-ключ, сохраненный на ПК:
Далее возвращаемся во вкладку Session, вводим в поле "Host Name" наш IP-адрес и жмем на кнопку "Open". Можно также сохранить сессию, чтобы не вводить IP-адрес и не загружать ключ каждый раз:
После этого в терминале нам предлагают ввести имя пользователя (вводим имя нашего нового суперпользователя) и ключевую фразу, которую мы указывали во время генерации ключа. Подключение к серверу с помощью SSH-ключа было выполнено успешно:
На этом у меня все! Постарался расписать все максимально подробно. Но если вдруг у вас остались какие-либо вопросы, то пишите сюда, я обязательно отвечу