Ще настроим PuTTY (Windows OS) за достъп до отдалечен сървър по протокола SSH с авторизация не чрез потребителско име и парола, а чрез SSH ключ. Ще направим същата настройка и в Linux OS (Debian).
Логин/парола автентикация не е безопасна.
В статията „VPN 2023 год. Създаваме личен VPN за 292 руб. на месец“ се описва как да се закупи виртуален сървър, а за достъп до виртуалния сървър се използва протоколът SSH с логин и парола. Логин – root. SSH порт – 22 (стандартен). Портът е отворен за всички. Не трябва да се оставя така! В Интернет има голям брой ботове (автоматични програми), които сканират отворените портове на сървъри и опитват да открият логин/парола за неоторизиран достъп до сървъра.
План за действия за сигурност на сървъра.
За да защитим нашия сървър, ние:
- на потребителя root е забранено да се удостоверява чрез SSH;
- Ще създадем обикновен потребител и ще настроим за него автентикацията чрез SSH ключ.
А ако е необходимо да имате root достъп до сървъра? Моля, автентифицирайте се като обикновен потребител с SSH ключ и след това превключете потребителя в суперпотребителски режим (root) с помощта на командата:
su -
Генериране на SSH ключ в Windows
За генериране на SSH ключ в ОС Windows ще използваме програмата PuTTY Key Generator (puttygen.exe), която се инсталира заедно с програмата PuTTY (putty.exe). Можете да я изтеглите от този линк https://putty.org.ru/download.html.

Избираме типа на генериран ключ RSA (вж. горната снимка), а броят битове в ключа е 2048 и натискаме бутона Генериране. Движим компютърната мишка хаотично, за да генерираме ключа.
Генерираният SSH ключ може да бъде допълнително защитен с паролна фраза. За тази цел в полето Key passphrase въвеждаме паролната фраза, а в полето Confirm passphrase повтаряме въвеждането на паролната фраза:

Натискаме бутона Запазване на публичен ключ (вж. горната илюстрация), за да запазим публичния ключ с разширение .pub:

Натискаме бутона Запазване на личен ключ, за да запазим личния ключ с разширение .ppk:

Частният ключ (.ppk) се съхранява на компютъра, от който ще се осъществява достъп до сървъра. А публичният ключ (.pub) трябва да бъде импортиран на сървъра.
Генериране на SSH ключ в Linux
За генериране на SSH ключ в Linux ОС въведете следната команда:
ssh-keygen
Измисляме име за SSH ключа (например, VSD_bg). По желание може да зададем паролна фраза (passphrase) за защита на SSH ключа:

След изпълнението на командата ssh-keygen
получаваме частен ключ (VSD_bg) и публичен ключ (VSD_bg.pub), който ще импортираме на сървъра.
Създаване на потребител на сървъра
На сървъра създаваме потребител с име user, с домашна директория /home/user и команден интерпретатор /bin/bash:
useradd -s /bin/bash -d /home/user -m user
Задаваме парола за потребител user:
passwd user
За изтриване на потребителя user заедно с домашната му директория се използва командата:
userdel -r user
Импортиране на публичен ключ (.pub)
Публичният ключ (.pub) трябва да бъде копиран от локалния компютър на сървъра. Това може да се направи с помощта на SCP-клиент. Повече информация: „Достъп до сървъра по протокола SCP в Windows/Linux„.
След като публичният ключ (.pub) е копиран на сървъра, трябва да бъде импортиран в специален файл с SSH ключове на потребителя, от името на когото ще се свързваме към сървъра по-късно.
За тази цел се влиза в сървъра като потребител user, създава се директория .ssh в началната директория (/home/user/):
mkdir .ssh
Задаваме права за достъп до директорията .ssh:
chmod 700 .ssh/
В директорията .ssh създаваме празен файл с името authorized_keys за SSH ключове:
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 ключ на сървър.
За настройка на автентикация с SSH ключ на сървъра ни е необходимо потребителско име с администраторски права (root).
Редактираме конфигурационния файл /etc/ssh/sshd_config. Забраняваме на потребителя root да се удостоверява чрез SSH.
PermitRootLogin no
Забраняваме удостоверяването чрез SSH с потребителско име и парола:
PasswordAuthentication no

Запазваме промените в конфигурационния файл и рестартираме SSH сървъра:
/etc/init.d/ssh restart
Настройка PuTTY с SSH ключом (Windows)
Стартираме програмата PuTTY. В прозореца PuTTY Configuration избираме раздел Connection, подраздел SSH, а в него – подраздел Auth. В полето Private key file for authentication посочваме името на частния ключ (.ppk) и пълния му път:

В раздела Връзка, в подраздела Данни, в полето Автоматично влизане в системата с потребителско име посочваме потребителското име, с което ще се осъществява достъп до сървъра. За нас това е потребител.

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

PuTTY ще поиска въвеждане на паролна фраза (Passphrase), с която сме защитили SSH ключа. За да не въвеждате паролната фраза всеки път при стартиране на PuTTY, можете да стартирате програмата Pageant (pageant.exe), да въведете паролната фраза в тази програма и частният ключ ще бъде в паметта на компютъра и няма да е необходимо да въвеждате паролната фраза при стартиране на PuTTY.
Стартираме програмата Pageant (pageant.exe), която също се инсталира заедно с програмата PuTTY:

В системния трей (областта за известия) на Windows ще се появи икона на тази програма. Кликваме два пъти върху иконата с компютърната мишка. Ще се появи прозорец Pageant Key List. Натискаме бутона Add Key:

Избираме частен ключ (.ppk), въвеждаме паролна фраза (passphrase) за него и натискаме бутона Ok:

Всичко! Частният ключ е в паметта на компютъра. Може да стартирате PuTTY и да установите връзка със сървъра по протокола SSH с авторизация чрез SSH ключ и без въвеждане на паролна фраза за SSH ключа:

Достъп до SSH с SSH ключ (Линукс)
В Linux за достъп до сървър чрез SSH с авторизация с ключ SSH въведете командата:
ssh -i /home/sha/VSD_bg user@123.45.67.89
където /home/sha/VSD_bg
е пълният път до частния ключ с име VSD_bg;
„потребител
– името на потребителя, от когото се осъществява достъп до сървъра;“
„123.45.67.89
– това е IP адресът на сървъра.“
Изводи
SSH ключ вместо потребителско име и парола е ЗАДЪЛЖИТЕЛЕН при използване на собствен сървър с отворен за всички порт 22.
Обсъждаме статията в коментарите под статията. Присъединете се!
Коментари