3.8 KiB
Настройка доступа к серверу по SSH ключам
Это файл‑заметка, описывающий опциональную настройку доступа к серверу по SSH‑ключам.
По умолчанию на сервере:
- вход по паролю разрешён
- вход по SSH‑ключу разрешён
Для повышения безопасности рекомендуется отключить вход по паролю, предварительно:
- создав SSH‑ключи на клиенте
- загрузив публичный ключ на сервер
- убедившись, что вход по ключу работает
Ниже — универсальная пошаговая инструкция.
1. Генерация SSH-ключа на клиенте (Mac / Linux)
Рекомендуется использовать ключ с цифровой подписью ed25519, сразу задавая явное имя файла и комментарий, особенно если серверов несколько
ssh-keygen -t ed25519 -f ~/.ssh/templatevm_key -C "servername@username"
Где:
ssh-keygen— генератор SSH‑ключей-t ed25519— тип ключа (современный, быстрый, короткий)~/.ssh/templatevm_key— имя файла, где будет сохранена пара ключей-C "servername@username"— комментарий, чтобы ключи было легко различать
В результате будет создано два ключа (публичный и приватный) в каталоге ~/.ssh/
~/.ssh/templatevm_key # приватный ключ
~/.ssh/templatevm_key.pub # публичный ключ
Если не указывать имя файла, ключи будут сохранены по умолчанию:
~/.ssh/id_ed25519 # приватный ключ
~/.ssh/id_ed25519.pub # публичный ключ
2. Копирование публичного ключа на сервер
- Скопировать ключ можно на сервер автоматически, используя
ssh-copy-id -i ~/.ssh/templatevm_key.pub nebaryshev@<VM_IP>
-
Либо создав/отредактировав файл вручную
~/.ssh/authorized_keys -
authorized_keysможет содержать несколько ключей — каждый ключ добавляется с новой строки. -
Проверить права на директорию и файл. Должны быть:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3. Проверка входа по ключу
ssh nebaryshev@<VM_IP>
Если пароль не запрашивается — всё работает.
4. Установка SSH-сервера
systemctl status ssh
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
systemctl status ssh
5. Отключение входа по паролю
⚠️ Делать ТОЛЬКО ПОСЛЕ проверки входа по ключу.
Открыть конфиг:
sudo nano /etc/ssh/sshd_config
Изменить:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
Перезапустить SSH:
sudo systemctl restart ssh
6. Включение входа по паролю
sudo passwd root
Открыть конфиг:
sudo nano /etc/ssh/sshd_config
PasswordAuthentication yes
PermitRootLogin yes
Перезапустить SSH:
sudo systemctl restart ssh