Ссылка скопирована

Создание SSH-ключей и их настройка

DonVardix DonVardix

Введение

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

Что будет сделано:

  • Сгенерированы стойкие ключи алгоритма Ed25519 с оптимальным числом раундов KDF;
  • Настроен файл ~/.ssh/config для быстрого доступа к VPS и GitHub по коротким алиасам;
  • Выставлены строгие права доступа (POSIX permissions) на служебные файлы .ssh;
  • Рассмотрена схема разделения личных и рабочих аккаунтов.

Результат: быстрый, удобный и безопасный вход на серверы командой ssh alias без ввода паролей и ошибок авторизации.


1. Генерация SSH-ключей

Криптографический алгоритм Ed25519 на сегодня является стандартом индустрии — он обеспечивает наивысшую скорость рукопожатия и короткий компактный размер ключа.

1.1. Базовая команда с параметрами

Выполните команду в терминале:

ssh-keygen -t ed25519 -a 200 -C "comment"

Разбор параметров:

  • -t ed25519 — тип современного алгоритма;
  • -a 200 — количество раундов хеширования KDF для защиты от перебора;
  • -C "comment" — текстовый комментарий для идентификации назначения ключа.

При вопросе о пути сохранения нажмите Enter (будет выбран стандартный файл ~/.ssh/id_ed25519). При вопросе о passphrase нажмите дважды Enter для выпуска ключа без пароля (для серверной автоматизации).

1.2. Создание с заданным именем файла

Для генерации ключа под конкретную задачу укажите имя через ключ -f:

ssh-keygen -t ed25519 -a 200 -f ~/.ssh/github_deploy -C "github_deploy"

В результате создаются два файла:

  • ~/.ssh/github_deployприватный ключ (никому не передается);
  • ~/.ssh/github_deploy.pubпубличный ключ (копируется на сервер или в GitHub).

2. Настройка файла конфигурации SSH

Файл ~/.ssh/config избавляет от необходимости помнить IP-адреса, нестандартные порты и пути к ключам.

Создайте или откройте конфигурационный файл:

nano ~/.ssh/config

2.1. Подключение к VPS-серверам

Задайте параметры для ваших серверов:

Host deploy
    HostName 203.0.113.10
    User deploy
    IdentityFile ~/.ssh/deploy
    IdentitiesOnly yes

Host admin
    HostName 203.0.113.10
    User admin
    Port 2222
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

Теперь вместо длинной команды ssh -p 2222 -i ~/.ssh/id_ed25519 admin@203.0.113.10 достаточно выполнить:

ssh admin

2.2. Изоляция нескольких аккаунтов GitHub

Если вы работаете с личным и корпоративным аккаунтами на GitHub:

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_personal
    IdentitiesOnly yes

Host github-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_work
    IdentitiesOnly yes

При клонировании рабочего проекта используйте алиас:

git clone git@github-work:company/repo.git

3. Права доступа к файлам ключей

В Linux и macOS SSH-демон жестко блокирует ключи, если они доступны для чтения другим пользователям операционной системы.

Установите корректные права:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/config

Если на сервере используется авторизация через файл authorized_keys:

chmod 600 ~/.ssh/authorized_keys

Важно

Права 600 означают чтение и запись только для владельца. Если выставить права 664 или 777, SSH откажет в подключении с ошибкой 'Permissions are too open'.

Вывод

Настройка клиентского SSH завершена. Ниже представлен типовой чек-лист добавления доступа к новому серверу.

1. Чек-лист подключения к новому серверу

  1. Сгенерируйте пару ключей: ssh-keygen -t ed25519 -f ~/.ssh/new_server.
  2. Скопируйте публичный ключ на удаленный сервер:
    ssh-copy-id -i ~/.ssh/new_server.pub deploy@203.0.113.10
  3. Пропишите алиас в ~/.ssh/config.
  4. Проверьте соединение: ssh new_server.

2. Проверка активных соединений

Для диагностики ошибок используйте флаг подробного вывода:

ssh -v deploy

3. Шпаргалка команд

  • Проверка отпечатка ключа: ssh-keygen -lf ~/.ssh/id_ed25519.pub
  • Тест подключения к GitHub: ssh -T git@github.com
  • Смена пароля существующего ключа: ssh-keygen -p -f ~/.ssh/id_ed25519