Back to: SSH-ключі — генерація та налаштування
SSH-ключи — генерация и настройка
SSH-ключи — основа безопасного удалённого доступа. Вместо пароля используется пара ключей: закрытый (private) хранится у клиента, открытый (public) — на сервере.
ssh-keygen — генерация ключей
# Генерация ключа RSA (по умолчанию)
ssh-keygen
# Генерация ключа Ed25519 (рекомендуется, современный и быстрый)
ssh-keygen -t ed25519
# С указанием комментария
ssh-keygen -t ed25519 -C "alice@laptop"
# С указанием файла
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_server
# С парольной фразой (passphrase)
ssh-keygen -t ed25519 -C "admin@server" -f ~/.ssh/server_key
Будут созданы два файла:
~/.ssh/id_ed25519— закрытый ключ (НИКОМУ не давать!)~/.ssh/id_ed25519.pub— открытый ключ (можно распространять)
ssh-copy-id — копирование ключа на сервер
# Копировать ключ на сервер
ssh-copy-id user@server.com
# С указанием порта
ssh-copy-id -p 2222 user@server.com
# С указанием конкретного ключа
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server.com
Ручная установка ключа
# Если ssh-copy-id недоступен
cat ~/.ssh/id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
~/.ssh/authorized_keys — ключи на сервере
Этот файл на сервере содержит открытые ключи, которым разрешён вход.
# Просмотр
cat ~/.ssh/authorized_keys
# Добавить ключ
echo "ssh-ed25519 AAAAC3Nza... alice@laptop" >> ~/.ssh/authorized_keys
# Права должны быть:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
~/.ssh/config — конфигурация клиента
Файл конфигурации упрощает подключение к разным серверам.
# Пример ~/.ssh/config:
# Продакшн-сервер
Host prod
HostName 192.168.1.100
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519_prod
ForwardAgent yes
# GitLab
Host gitlab
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519_git
# Raspberry Pi
Host rpi
HostName 192.168.1.50
User pi
IdentityFile ~/.ssh/id_rsa
# Теперь можно подключаться просто:
ssh prod
ssh gitlab
scp file.txt rpi:/home/pi/
~/.ssh/known_hosts — отпечатки серверов
При первом подключении к серверу его отпечаток сохраняется в known_hosts. Если отпечаток изменится — SSH выдаст предупреждение (защита от MITM-атак).
# Просмотр
cat ~/.ssh/known_hosts
# Удалить запись (если сервер переустановлен)
ssh-keygen -R 192.168.1.100
Настройка SSH-сервера
# Основной конфиг: /etc/ssh/sshd_config
# Рекомендуемые настройки безопасности:
Port 22
PermitRootLogin prohibit-password # или no
PasswordAuthentication no # только по ключам
PubkeyAuthentication yes
AllowUsers alice bob
X11Forwarding no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
# Перезапуск SSH-сервера
sudo systemctl restart sshd
# Проверка конфигурации
sudo sshd -t
ssh-agent — управление ключами
# Запустить агент
eval "$(ssh-agent -s)"
# Добавить ключ
ssh-add ~/.ssh/id_ed25519
# Список загруженных ключей
ssh-add -l
# Удалить ключ
ssh-add -d ~/.ssh/id_ed25519
# Удалить все ключи
ssh-add -D
Практическое задание
- Сгенерируйте ключ:
ssh-keygen -t ed25519 -C "test@linux" - Проверьте файлы:
ls -la ~/.ssh/ - Создайте конфиг:
nano ~/.ssh/configс одним хостом - Скопируйте ключ на удалённый сервер:
ssh-copy-id user@host - Подключитесь без пароля:
ssh host - Запустите ssh-agent:
eval "$(ssh-agent -s)" - Добавьте ключ:
ssh-add


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