- Зачем мне создавать и использовать SSH-ключ?
- Предварительные условия и основные понятия
- Создание SSH-ключа в Linux/macOS/WSL
- Создание SSH-ключа в Windows (PowerShell / Windows OpenSSH)
- Импорт открытых ключей в AWS EC2 и других облачных панелях.
- Добавьте ключ в GitLab/GitHub и используйте его в CI.
- Настройки сервера и безопасности после установки ключа
- Практические советы для различных применений
- Ключевое управление, ротация и стандарты
- Дополнительные советы и рекомендации по устранению неполадок
- Окончательные рекомендации по безопасности
- Краткое изложение и предлагаемый контрольный список
Зачем мне создавать и использовать SSH-ключ?
В облачных средах и международных центрах обработки данных безопасный и автоматизированный вход на серверы является краеугольным камнем любой операции DevOps, веб-хостинга, рендеринга, искусственного интеллекта и управления базами данных. SSH-ключи Они представляют собой стандартный, безопасный и настраиваемый с помощью скриптов метод аутентификации и заменяют слабые пароли.
Использование открытых/закрытых ключей снижает риск атак методом перебора, упрощает автоматизацию и внедрение более точных средств контроля доступа.
Предварительные условия и основные понятия
Закрытый ключ: Ваш конфиденциальный файл, который не должен быть разглашен.
Открытый ключ: Файл, размещаемый на сервере (authorized_keys).
Распространенные алгоритмы: ed25519 (рекомендуется), rsa 4096.
Маршруты: ~/.ssh/id_* На Linux/WSL и C:\Users\ \.ssh В Windows.
Доступы: chmod 700 ~/.ssh и chmod 600 Для закрытого ключа.
Создание SSH-ключа в Linux/macOS/WSL
Рекомендуется ed25519 Используйте, если вам не требуется RSA по соображениям совместимости.
Пошаговая инструкция по генерации и управлению ключами в Shell.
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519 -o -a 100
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/id_rsa -o -a 100
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ls -la ~/.ssh
cat ~/.ssh/id_ed25519.pub
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 [email protected]
chmod 400 my-aws-key.pem
ssh -i my-aws-key.pem [email protected]Примечание: В AWS ключ часто выбирается или импортируется при запуске экземпляра. Если у вас есть PEM-файл, используйте его в качестве идентификатора.
Создание SSH-ключа в Windows (PowerShell / Windows OpenSSH)
В Windows 10/11 есть клиент OpenSSH; также можно использовать PuTTY/Puttygen для подключения к PuTTY.
Команды PowerShell
ssh-keygen -t ed25519 -C "[email protected]" -f $env:USERPROFILE\.ssh\id_ed25519
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519Путь к файлу:
C:\Users\ \.ssh\id_ed25519C:\Users\ \.ssh\id_ed25519.pub
Преобразовать PEM в PPK с помощью PuTTYgen
Общие шаги:
Откройте PuTTYgen.
Файл > Загрузить закрытый ключ и файл
my-aws-key.pemЗагрузить (показать все файлы).Сохраните закрытый ключ как
my-aws-key.ppkИспользуйте в PuTTY (Подключение > SSH > Аутентификация > Файл закрытого ключа).
Импорт открытых ключей в AWS EC2 и других облачных панелях.
Консоль AWS: EC2 > Пары ключей > Импорт пары ключей. Имя и содержимое файла. .паб Входить.
При создании экземпляра можно выбрать существующую пару ключей. В других центрах обработки данных часто есть опция «Загрузить/импортировать SSH-ключ» в панели управления.
Пример использования cloud-init для добавления открытого ключа
#cloud-config
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... [email protected]Добавьте ключ в GitLab/GitHub и используйте его в CI.
Для GitLab: Настройки пользователя > SSH-ключи Вставьте открытый ключ. Перейдите в проект, чтобы развернуть ключи.
В CI/CD загрузите закрытый ключ как защищенную переменную и используйте его в задании, создав файл с ограниченным доступом.chmod 600).
Настройки сервера и безопасности после установки ключа
Шаг 1: Установите права доступа.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519Затем настройки /etc/ssh/sshd_config Проверить и обновить:
Аутентификация по паролю отсутствует
PermitRootLogin no
PubkeyAuthentication yes
Ты можешь РазрешитьПользователям Настройте ограничение доступа для пользователей.
UseDNS no При желании можно изменить порт.
sudo systemctl restart sshdМежсетевой экран:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw allow 2222/tcpДля предотвращения атак методом перебора паролей используйте Fail2ban или CrowdSec:
sudo apt install fail2banДля серверов с конфиденциальной информацией используйте бастион/промежуточный хост, чтобы ограничить прямой доступ к частным сетям.
Практические советы для различных применений
Для трейдеров (VPS для торговли)
Выберите местоположение: Расположение вблизи серверов брокеров или бирж для минимизации задержек. У нас более 85 представительств по всему миру, что позволяет нам обеспечить размещение вашего целевого рынка в непосредственной близости.
Рекомендуется ограничить использование SSH только статическим IP-адресом или через VPN:
sudo ufw allow from 203.0.113.5 to any port 22Для геймеров (игровой VPS)
Для игровых серверов используйте локации с надежным пирингом и подходящим CDN/BGP. Используйте SSH-ключи вместо паролей и бастионный хост для уменьшения поверхности атаки.
Для ИИ и рендеринга (облачные GPU)
Используйте надежные ключи (ed25519/RSA4096) для подключения к серверам с графическими процессорами и назначайте отдельного пользователя и ключ для каждого проекта.
rsync -avz -e "ssh -i ~/.ssh/id_ed25519 -p 2222" /local/path user@remote:/remote/pathДля хостинга и хостинга GitLab
Используйте ключ, специфичный для сервера (ключ развертывания), с ограниченным доступом для автоматического доступа к частным репозиториям на сервере.
Ключевое управление, ротация и стандарты
Периодически меняйте ключи (например, каждые 6–12 месяцев).
Извлеките старые ключи из
авторизованные_ключиИ удалите панель облачных сервисов.Используйте кодовую фразу для закрытого ключа и сохраните её в менеджере паролей.
В организациях для централизованного управления используйте SSH-сертификаты и центры сертификации (OpenSSH CA).
Дополнительные советы и рекомендации по устранению неполадок
При возникновении ошибки Доступ запрещен (publickey) Убедитесь, что открытый ключ находится в ~/.ssh/authorized_keys Оно существует, и права доступа установлены правильно.
sudo journalctl -u sshd -e
sudo tail -f /var/log/auth.logЕсли вы используете ProxyJump или промежуточный хост, файл конфигурации будет полезен:
Host bastion
HostName bastion.example.com
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Host internal-*
ProxyJump bastion
User deploy
IdentityFile ~/.ssh/id_deployОт ServerAliveInterval и ServerAliveCountMax Используйте это в конфигурации SSH, чтобы предотвратить внезапное завершение сеансов.
Окончательные рекомендации по безопасности
К другим важным моментам относятся ограничение доступа по SSH только по IP-адресам, использование VPN или частной сети, а также применение сервисов защиты от DDoS-атак для серверов, имеющих важное значение.
Краткое изложение и предлагаемый контрольный список
Создание ключа: ed25519 с парольной фразой
Защита файлов:
chmod 700 ~/.ssh && chmod 600 private_keyАктивация SSH-агента и добавление ключей.
Загрузите открытый ключ в панель управления AWS или центр обработки данных, либо используйте cloud-init.
Отключение аутентификации по паролю и разрешения входа в систему root.
Межсетевой экран/UFW и Fail2ban или CrowdSec
Использование бастиона, ограничения IP-адресов и VPN для доступа к конфиденциальной информации.
Регулярное дублирование и ротация ключей.









