SSH-ключі — генерація та налаштування

SSH-ключі — генерація та налаштування

Изображение записи по умолчанию
0

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

Практическое задание

  1. Сгенерируйте ключ: ssh-keygen -t ed25519 -C "test@linux"
  2. Проверьте файлы: ls -la ~/.ssh/
  3. Создайте конфиг: nano ~/.ssh/config с одним хостом
  4. Скопируйте ключ на удалённый сервер: ssh-copy-id user@host
  5. Подключитесь без пароля: ssh host
  6. Запустите ssh-agent: eval "$(ssh-agent -s)"
  7. Добавьте ключ: ssh-add

Comments

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Related Post