SSH на все случаи жизни
Categories:
Содержание
- Генерация SSH-ключей
- Настройка подключения к удаленному серверу
- Настройка подключения к GitHub
- Настройка подключения к GitLab
- Настройка подключения к Gitea
- Настройка подключения между серверами
- Безопасность и дополнительные настройки
Генерация 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
Добавьте конфигурацию для сервера:
3. Подключение к серверу
Теперь можно подключаться просто:
ssh myserver
Настройка подключения к GitHub
1. Копирование публичного ключа
Выведите содержимое публичного ключа:
cat ~/.ssh/id_ed25519.pub
2. Добавление ключа в GitHub
- Перейдите в GitHub → Settings → SSH and GPG keys
- Нажмите “New SSH key”
- Вставьте содержимое публичного ключа
- Сохраните
3. Тестирование подключения
ssh -T git@github.com
Должно появиться сообщение с вашим именем пользователя.
Настройка подключения к GitLab
1. Копирование публичного ключа
cat ~/.ssh/id_ed25519.pub
2. Добавление ключа в GitLab
- Перейдите в GitLab → Preferences → SSH Keys
- Вставьте содержимое публичного ключа
- Сохраните
3. Тестирование подключения
ssh -T git@gitlab.com
Настройка подключения к Gitea
1. Копирование публичного ключа
cat ~/.ssh/id_ed25519.pub
2. Добавление ключа в Gitea
- Перейдите в Gitea → Settings → SSH / GPG Keys
- Нажмите “Add Key”
- Вставьте содержимое публичного ключа
- Сохраните
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
:
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
:
4. Менеджер SSH-ключей (опционально)
Для удобного управления множеством ключей можно использовать:
sudo apt install keychain # для Debian/Ubuntu
Добавьте в ~/.bashrc
:
eval `keychain --eval --agents ssh id_ed25519`
Заключение
Вы успешно настроили SSH-ключи для:
- Удаленных серверов
- GitHub, GitLab и Gitea
- Межсерверного взаимодействия
Дополнительные рекомендации:
- Регулярно обновляйте SSH-ключи (рекомендуется каждые 6-12 месяцев)
- Используйте разные ключи для разных сервисов
- Храните приватные ключи в безопасном месте
- Используйте менеджер паролей для хранения парольных фраз