SSH — это твой волшебный ключ к серверу

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: Вручную (если сервер уже есть)

  1. Скопируй публичный ключ в буфер:
    cat ~/.ssh/id_ed25519.pub | pbcopy  # macOS
    cat ~/.ssh/id_ed25519.pub | xclip    # Linux
    
  2. На сервере:
    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

🗓 Дата публикации: 18.10.2024, но это не точно...

SSH Pet VPS