Настроем PuTTY (ОС Windows) для доступа на удаленный сервер по протоколу SSH с авторизацией не по логину и паролю, а с помощью SSH key. Аналогичную настройку сделаем и в ОС Linux (Debian).

Авторизация по логину/паролю небезопасна

В статье «VPN 2023 год. Создаем личный VPN за 292 руб. в месяц» описывается приобретение виртуального сервера, а для доступа на виртуальный сервер используется протокол SSH с авторизацией по логину и паролю. Логин — root. SSH порт — 22 (стандартный). Порт открыт всем. Оставлять так сервер нельзя! В сети Интернет огромное количество ботов (автоматических программ), сканирующих открытые порты серверов и подбирающих логин/пароль для несанкционированного доступа на сервер.

План действий для безопасности сервера

Для защиты своего сервера мы:

  • пользователю root вообще запретим авторизацию по SSH;
  • создадим обычного пользователя и настроим для этого пользователя авторизацию с помощью SSH key.

А если нужен root доступ на сервер? Пожалуйста! Авторизуйтесь под обычным пользователем с помощью SSH key, а затем переключайте пользователя в режим суперпользователя (root) с помощью команды:

su -

Генерация SSH key в Windows

Для генерации SSH ключа в ОС Windows мы будем использовать программу PuTTY Key Generator (puttygen.exe), которая устанавливается вместе с программой PuTTY (putty.exe). Скачать можно по ссылке https://putty.org.ru/download.html.

Программа PuTTY Key Generator

Тип генерируемого ключа выбираем RSA (см. рисунок выше), а количество бит в ключе — 2048 и нажимаем кнопку Generate. Двигаем хаотично компьютерной мышью для генерации ключа.

Сгенерированный SSH ключ можно дополнительно защитить парольной фразой. Для этого в поле Key passphrase вводим парольную фразу, а в поле Confirm passphrase повторяем ввод парольной фразы:

SSH key. Генерация в ОС Windows

Нажимаем кнопку Save public key (см. рисунок выше), чтобы сохранить публичный ключ с расширением .pub:

SSH key. Save public key

Нажимаем кнопку Save private key, чтобы сохранить приватный ключ с расширением .ppk:

SSH key. Save private key

Приватный ключ (.ppk) хранится на компьютере, с которого будет осуществляться доступ на сервер. А публичный ключ (.pub) должен быть импортирован на сервер.

Генерация SSH key в Linux

Для генерации SSH key в ОС Linux вводим команду:

ssh-keygen

Придумываем имя SSH ключу (например, VSD_bg). При желании можно задать парольную фразу (passphrase) для защиты SSH key:

SSH key. Генерация в ОС Linux

В результате выполнения команды ssh-keygen получаем в текущей директории приватный ключ (VSD_bg) и публичный ключ (VSD_bg.pub), который будем импортировать на сервер.

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

На сервере создаем пользователя с именем user, c домашней директорией /home/user и командной оболочкой /bin/bash:

useradd -s /bin/bash -d /home/user -m user

Задаем пароль для пользователя user:

passwd user

Для удаления пользователя user вместе с домашней директорией используется команда:

userdel -r user

Импорт публичного ключа (.pub)

Публичный ключ (.pub) нужно скопировать с локального компьютера на сервер. Это можно сделать с помощью SCP-клиента.

Если локальный компьютер под ОС Linux, то копируем из текущей директории публичный ключ (VSD_bg.pub) на сервер (с IP 123.45.67.89) в домашнюю директорию /home/user только что созданного пользователя user:

scp VSD_bg.pub user@123.45.67.89:/home/user

Если локальный компьютер под ОС Windows, то см. «Доступ к серверу по протоколу SCP в Windows/Linux«.

После того, как публичный ключ (.pub) скопирован на сервер, его нужно импортировать в специальный файл SSH ключей того пользователя, от имени которого мы будем в последствии подключаться к серверу.

Для этого заходим на сервер под пользователем user, в домашней директории (/home/user/) создаем директорию .ssh:

mkdir .ssh

Устанавливаем права доступа к директории .ssh:

chmod 700 .ssh/

В директории .ssh создаем пустой файл SSH ключей с именем authorized_keys:

touch .ssh/authorized_keys

Устанавливаем права доступа к файлу authorized_keys:

chmod 600 .ssh/authorized_keys

Публичный ключ (/home/user/VDS_bg.pub), сгенерированный в ОС Windows, импортируем в специальный файл SSH ключей authorized_keys с помощью команды:

ssh-keygen -i -f /home/user/VDS_bg.pub >> /home/user/.ssh/authorized_keys

Публичный ключ (/home/user/VSD_bg.pub), сгенерированный в ОС Linux, импортируем в специальный файл SSH ключей authorized_keys с помощью команды:

cat /home/user/VSD_bg.pub >> /home/user/.ssh/authorized_keys

Теперь публичный ключ (.pub) можно удалить:

rm /home/user/VDS_bg.pub

Настройка авторизации с SSH key на сервере

Для настройки авторизации с SSH key на сервере нам понадобятся права суперпользователя (root).

Правим конфигурационный файл /etc/ssh/sshd_config. Запрещаем пользователю root авторизацию по SSH:

PermitRootLogin no

Запрещаем авторизацию по SSH с помощью логина и пароля:

PasswordAuthentication no
Конфигурационный файл sshd_config

Сохраняем изменения в конфигурационном файле и перезапускаем SSH сервер:

/etc/init.d/ssh restart

Настройка PuTTY c SSH key (Windows)

Запускаем программу PuTTY. В окне PuTTY Configuration выбираем раздел Connection, подраздел SSH, а в нем — подраздел Auth. Указываем в поле Private key file for authentication имя приватного ключа (.ppk) и полный путь к нему:

PuTTY Configuration. Раздел Auth

В разделе Connection, в подразделе Data, в поле Auto-login username указываем имя пользователя, от имени которого будет осуществляться доступ на сервер. У нас это user.

PuTTY Configuration. Раздел Data

В разделе Session проверяем, что в поле Host Name (or IP address) — IP адрес нужного сервера, в поле Port — цифра 22. Нажимаем кнопку Save, а затем кнопку Open:

PuTTY Configuration. Раздел Session

PuTTY запросит ввод парольной фразы (Passphrase), которой мы защитили SSH key. Чтобы не вводить парольную фразу каждый раз при запуске PuTTY, можно запустить программу Pageant (pageant.exe), ввести парольную фразу в этой программе, и приватный ключ будет в памяти компьютера, и ввода парольной фразы при запуске PuTTY не потребуется.

Запускаем программу Pageant (pageant.exe), эта программа тоже устанавливается вместе с программой PuTTY:

Программа pageant.exe

В системном трее (области уведомлений) Windows появится иконка этой программы. Кликаем два раза по этой иконке компьютерной мышью. Появится окно Pageant Key List. Нажимаем кнопку Add Key:

Pageant Key List

Выбираем приватный ключ (.ppk), вводим парольную фразу (passphrase) к нему и нажимаем кнопку Ok:

Pageant Enter Passphrase

Все! Приватный ключ в памяти компьютера. Можно запускать PuTTY и устанавливать соединение с сервером по протоколу SSH с авторизацией с помощью SSH key и без ввода парольной фразы к SSH ключу:

SSH key. Authenticating with public key

Доступ по SSH с SSH key (Linux)

В ОС Linux для доступа на сервер по SSH с авторизацией с помощью SSH key вводим команду:

ssh -i /home/sha/VSD_bg user@123.45.67.89

где /home/sha/VSD_bg — это полный путь к приватному ключу с именем VSD_bg;

user — имя пользователя, от имени которого осуществляется доступ на сервер;

123.45.67.89 — это IP адрес сервера.

Выводы

SSH key вместо логина и пароля ОБЯЗАТЕЛЕН при использовании собственного сервера с открытым для всех SSH портом 22.

Обсуждаем статью в комментариях под статьей. Присоединяйтесь!

Комментарии

  • Ирина К.
    Ответить

    Если SSH соединение разрывается при «неактивности», и это неудобно, то в Linux, в ssh выставляем значение 60 для параметра ServerAliveInterval:
    ssh -o ServerAliveInterval=60 -i /home/sha/VSD_bg user@123.45.67.89
    А в Windows, в PuTTY в разделе Connection выставляем значение 60 для параметра Seconds between keepalives (0 to turn off).

Добавить комментарий

Этот сайт защищен reCAPTCHA, и к нему применяются Google Политика конфиденциальности и Условия использования.

Войти

Зарегистрироваться

Сбросить пароль

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