Введение
Использование паролей при подключении к удаленным серверам и репозиториям подвержено риску перехвата и брутфорса. 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
Важно
Вывод
Настройка клиентского SSH завершена. Ниже представлен типовой чек-лист добавления доступа к новому серверу.
1. Чек-лист подключения к новому серверу
- Сгенерируйте пару ключей:
ssh-keygen -t ed25519 -f ~/.ssh/new_server. - Скопируйте публичный ключ на удаленный сервер:
ssh-copy-id -i ~/.ssh/new_server.pub deploy@203.0.113.10 - Пропишите алиас в
~/.ssh/config. - Проверьте соединение:
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