SSH — это не просто способ подключиться к серверу. Это твой цифровой пропуск в мир DevOps, где пароли — вчерашний день, а безопасность начинается с пары файлов в ~/.ssh. В статье разберём, как за 5 минут создать ключ, добавить его на сервер и забыть о бесконечных вводах паролей.
🔐 Почему SSH-ключи, а не пароли?
Представь: ты подключаешься к серверу с Rails-приложением. Варианты:
- Пароль: каждый раз вводить
my_super_secure_password_123, риск брутфорса. - SSH-ключ: один файл на компьютере — и вход за секунду без вопросов.
SSH-ключ — это:
- Приватный ключ (только у тебя) — как отпечаток пальца.
- Публичный ключ (на сервере) — замок, который открывается этим отпечатком.
🛠 Генерация ключа: RSA или ed25519?
Открой терминал и введи:
ssh-keygen -t ed25519 -C "your_email@example.com"
Почему ed25519?
- Быстрее и безопаснее старого RSA.
- Короче ключ (нет этих
id_rsa.pubна 2 экрана). - Поддержка в современных системах (Ubuntu 20.04+, macOS 10.12+).
Если нужен RSA (для старых серверов):
ssh-keygen -t rsa -b 4096 -C "backup_key@example.com"
📂 Где лежат ключи?
После генерации:
- Приватный ключ:
~/.ssh/id_ed25519(никому не показывать!). - Публичный ключ:
~/.ssh/id_ed25519.pub(можно раздавать).
Пример публичного ключа:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJu7X... your_email@example.com
🚪 Добавляем ключ на сервер
Вариант 1: Вручную (если сервер уже есть)
- Скопируй публичный ключ в буфер:
cat ~/.ssh/id_ed25519.pub | pbcopy # macOS cat ~/.ssh/id_ed25519.pub | xclip # Linux - На сервере:
mkdir -p ~/.ssh echo "ВАШ_КЛЮЧ" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
Вариант 2: Автоматически (для нового VPS)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
🔌 Подключаемся без пароля
Теперь просто:
ssh user@server_ip
Если ключ не RSA по умолчанию:
ssh -i ~/.ssh/id_ed25519 user@server_ip
🧩 Интеграция с Ruby-проектами
1. Capistrano
Добавь в deploy.rb:
set :ssh_options, keys: %w(~/.ssh/id_ed25519), forward_agent: true
2. Git over SSH
Для приватных репозиториев:
git clone git@github.com:user/repo.git
💥 Антипаттерны
| Ошибка | Последствия |
|---|---|
chmod 777 ~/.ssh |
Любой может украсть ключи |
| Использовать один ключ везде | Компромат одного = доступ ко всем |
| Хранить ключи в репозитории | GitHub сканирует .env и .ssh |
🛡️ Безопасность: что делать с ключами?
- Парольная фраза (при генерации):
ssh-keygen -t ed25519 -C "email" -f ~/.ssh/project_deploy -N "my_strong_passphrase" - SSH-агент (чтобы не вводить фразу каждый раз):
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
🧾 Вывод
SSH — это не страшно.
3 команды — и ты избавился от паролей, брутфорса и нервных вводов sudo su