Ответ
SSH (Secure Shell) — это криптографический сетевой протокол для безопасного удаленного выполнения команд, управления системами и безопасной передачи файлов.
Ключевое применение SSH в DevOps:
- Удаленное управление серверами: Основной способ доступа к Linux/Unix-серверам для администрирования.
- Безопасное выполнение команд: Автоматизация задач через инструменты вроде Ansible, который использует SSH для подключения к хостам.
- Туннелирование (SSH Tunnels / Port Forwarding): Создание зашифрованных каналов для безопасного доступа к внутренним сервисам (базам данных, веб-интерфейсам) или обхода ограничений сети.
- Передача файлов: Использование
scpилиsftpдля безопасного копирования конфигураций, логов, артефактов сборки. - Git-операции: Многие Git-серверы используют SSH-ключи для аутентификации при операциях
git clone,git push.
Практика безопасного использования SSH-ключей:
- Использование ключей вместо паролей: Аутентификация по ключу криптографически надежнее.
- Защита приватных ключей: Приватный ключ (
id_rsa) должен иметь права600и никогда не передаваться. - Использование агента SSH (
ssh-agent): Позволяет кэшировать ключ в памяти, избегая его постоянного хранения на диске и многократного ввода парольной фразы.
Пример рабочего процесса с SSH-агентом и Ansible:
# 1. Генерация ключа (если нет)
ssh-keygen -t ed25519 -C "devops@company" -f ~/.ssh/id_ed25519
# 2. Добавление публичного ключа на целевой сервер
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@production-server
# 3. Запуск ssh-agent и добавление ключа (часто делается автоматически в сессии)
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# 4. Теперь можно безопасно подключиться без пароля или запустить Ansible-плейбук
ssh user@production-server
ansible-playbook -i inventory deploy.yml
Конфигурация для повышения безопасности (~/.ssh/config):
Host prod-
HostName %h.example.com
User deploy-user
IdentityFile ~/.ssh/id_ed25519_prod
Port 2222 # Нестандартный порт
# Отключение менее безопасных методов аутентификации
PasswordAuthentication no
PubkeyAuthentication yes