SSH на все случаи жизни

Полное руководство по настройке SSH-ключей и подключений

Содержание

  1. Генерация SSH-ключей
  2. Настройка подключения к удаленному серверу
  3. Настройка подключения к GitHub
  4. Настройка подключения к GitLab
  5. Настройка подключения к Gitea
  6. Настройка подключения между серверами
  7. Безопасность и дополнительные настройки

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

1. Генерация пары ключей

Откройте терминал и выполните:

ssh-keygen -t ed25519 -C "ваш_email@example.com"

Для большей совместимости (если ed25519 не поддерживается):

ssh-keygen -t rsa -b 4096 -C "ваш_email@example.com"

2. Выбор расположения ключей

При запросе расположения ключей:

  • Нажмите Enter для сохранения в стандартном расположении (~/.ssh/id_ed25519)
  • Или укажите свой путь (например, ~/.ssh/github_ed25519)

3. Задание парольной фразы

Рекомендуется задать надежную парольную фразу для дополнительной безопасности.

Настройка подключения к удаленному серверу

1. Копирование публичного ключа на сервер

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@remote_server

Если ssh-copy-id недоступен:

cat ~/.ssh/id_ed25519.pub | ssh username@remote_server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

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

Создайте/отредактируйте файл ~/.ssh/config:

nano ~/.ssh/config

Добавьте конфигурацию для сервера:

$$Host myserver HostName server_ip_or_domain User username IdentityFile ~/.ssh/id_ed25519 Port 22 # измените, если используете нестандартный порт$$

3. Подключение к серверу

Теперь можно подключаться просто:

ssh myserver

Настройка подключения к GitHub

1. Копирование публичного ключа

Выведите содержимое публичного ключа:

cat ~/.ssh/id_ed25519.pub

2. Добавление ключа в GitHub

  1. Перейдите в GitHub → Settings → SSH and GPG keys
  2. Нажмите “New SSH key”
  3. Вставьте содержимое публичного ключа
  4. Сохраните

3. Тестирование подключения

ssh -T git@github.com

Должно появиться сообщение с вашим именем пользователя.

Настройка подключения к GitLab

1. Копирование публичного ключа

cat ~/.ssh/id_ed25519.pub

2. Добавление ключа в GitLab

  1. Перейдите в GitLab → Preferences → SSH Keys
  2. Вставьте содержимое публичного ключа
  3. Сохраните

3. Тестирование подключения

ssh -T git@gitlab.com

Настройка подключения к Gitea

1. Копирование публичного ключа

cat ~/.ssh/id_ed25519.pub

2. Добавление ключа в Gitea

  1. Перейдите в Gitea → Settings → SSH / GPG Keys
  2. Нажмите “Add Key”
  3. Вставьте содержимое публичного ключа
  4. Сохраните

3. Тестирование подключения

ssh -T git@gitea.example.com  # замените на ваш домен Gitea

Настройка подключения между серверами

1. Генерация отдельного ключа для сервера

На сервере-источнике:

ssh-keygen -t ed25519 -f ~/.ssh/server_to_server -C "server1_to_server2"

2. Копирование ключа на целевой сервер

ssh-copy-id -i ~/.ssh/server_to_server.pub username@target_server

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

На сервере-источнике в ~/.ssh/config:

$$Host targetserver HostName target_server_ip User username IdentityFile ~/.ssh/server_to_server$$

4. Проверка подключения

ssh targetserver

Безопасность и дополнительные настройки

1. Защита ключей

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

2. Использование ssh-agent

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Для автоматического добавления при входе добавьте в ~/.bashrc или ~/.zshrc:

if [ -z "$SSH_AUTH_SOCK" ]; then
   eval "$(ssh-agent -s)"
   ssh-add ~/.ssh/id_ed25519 2>/dev/null
fi

3. Настройка двухфакторной аутентификации

Для серверов рекомендуется:

  • Отключить вход по парню
  • Использовать только SSH-ключи
  • Настроить Fail2Ban

В /etc/ssh/sshd_config:

$$PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no PermitRootLogin no$$

4. Менеджер SSH-ключей (опционально)

Для удобного управления множеством ключей можно использовать:

sudo apt install keychain  # для Debian/Ubuntu

Добавьте в ~/.bashrc:

eval `keychain --eval --agents ssh id_ed25519`

Заключение

Вы успешно настроили SSH-ключи для:

  • Удаленных серверов
  • GitHub, GitLab и Gitea
  • Межсерверного взаимодействия

Дополнительные рекомендации:

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