Конфиги SSH и SSHD: Основные отличия
- Нояб 21, 2025
- 90
Конфигурационные файлы SSH: Глубокое погружение в ssh_config и sshd_config
Secure Shell (SSH) — это краеугольный камень безопасности и администрирования современных IT-систем. Однако его эффективная работа зависит от корректной настройки, которая осуществляется через два принципиально разных, но часто путаемых конфигурационных файла: ssh_config и sshd_config. Понимание различий между ними критически важно для любого системного администратора, разработчика или безопасника.
Ключевое отличие: Клиент vs. Сервер
Вся суть различий заключена в одной фразе:
ssh_config— это конфигурация клиента SSH. Он управляет поведением вашего соединения с удаленными серверами.sshd_config— это конфигурация демона (сервера) SSH. Он управляет поведением сервера, который принимает входящие соединения.
Простая аналогия: представьте, что вы звоните по телефону. ssh_config — это настройки вашего телефона (автодозвон, громкость, код страны по умолчанию). sshd_config — это настройки телефонной станции (какие звонки принимать, требуется ли пароль, записывать ли разговоры).
Детальное сравнение: ssh_config и sshd_config
| Критерий | ssh_config (Клиент) | sshd_config (Сервер) |
|---|---|---|
| Основная роль | Определяет параметры для установления исходящих соединений. | Определяет параметры для приема и обработки входящих соединений. |
| Типичное местоположение | ~/.ssh/config (пользовательский)/etc/ssh/ssh_config (глобальный) |
/etc/ssh/sshd_config (только глобальный) |
| Кто его читает? | Утилита ssh (а также scp, sftp). |
Демон sshd (сервис SSH). |
| Примеры директив |
|
|
| Контекст безопасности | Повышает удобство и безопасность клиентской машины (например, принудительное использование ключей). | Определяет политику безопасности всего сервера. Ошибки здесь могут привести к компрометации. |
| Применение изменений | Изменения применяются немедленно при следующем запуске клиента ssh. |
Требуется перезагрузка демона: systemctl reload sshd или systemctl restart sshd. |
Практические примеры настройки
Пример ~/.ssh/config (Клиент)
# Глобальные настройки для всех хостов Host * ServerAliveInterval 60 ServerAliveCountMax 10
Настройки для конкретного рабочего сервера
Host myserver
HostName 192.168.1.100
User myusername
Port 2222
IdentityFile ~/.ssh/id_ed25519_work
Настройки для GitHub
Host github.com
User git
IdentityFile ~/.ssh/id_rsa_github
IdentitiesOnly yes
Этот конфиг позволяет вместо ssh -p 2222 myusername@192.168.1.100 просто писать ssh myserver.
Пример /etc/ssh/sshd_config (Сервер)
# Порт и адрес прослушивания Port 22 ListenAddress 0.0.0.0
Безопасность аутентификации
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Ограничение пользователей
AllowUsers deploy admin
Настройки логгинга и сессий
ClientAliveInterval 300
ClientAliveCountMax 2
MaxAuthTries 3
Включение функционала
X11Forwarding no
AllowTcpForwarding yes
Эта конфигурация ужесточает безопасность сервера, отключая вход по паролю и для root-пользователя.
Как они взаимодействуют?
Процесс установления соединения — это "переговоры" между клиентом и сервером, где каждый руководствуется своими правилами.
- Пользователь вводит
ssh myserver. - Клиент
sshчитает свойssh_config, находит секциюHost myserverи применяет параметры (например, подставляет порт 2222 и ключ). - Клиент инициирует соединение с сервером на указанный порт.
- Демон
sshdна сервере, прослушивающий этот порт, получает запрос на соединение. - Демон читает свой
sshd_configи проверяет, разрешено ли соединение с этого IP, разрешена ли аутентификация по ключу и т.д. - Если параметры, предложенные клиентом (например, тип аутентификации), удовлетворяют правилам сервера, соединение устанавливается.
Важно помнить: правила сервера (sshd_config) имеют приоритет. Если клиент запросит X11-форвардинг, но на сервере он запрещен директивой X11Forwarding no, то форвардинг работать не будет.
Заключение
Понимание дихотомии ssh_config и sshd_config — это не просто вопрос теории. Это фундаментальный навык для:
- Безопасности: Правильная настройка
sshd_configзащищает ваш сервер от несанкционированного доступа. - Эффективности: Грамотное использование
ssh_configэкономит время и избавляет от рутинного ввода параметров. - Отладки: Когда соединение не устанавливается, вы будете знать, на какой стороне (клиент или сервер) искать проблему.
Разделяйте эти концепции в своем сознании, и управление SSH-доступом станет предсказуемой и эффективной задачей.