Конфиги SSH и SSHD: Основные отличия

БЕСПЛАТНЫЙ МАСТЕР-КЛАСС!

ДЕНЬ 1 - Какие основные навыки сисадмина?

ДЕНЬ 2 - Настройка домена Windows Server 2016

ДЕНЬ 3 - Администрирование 1С:Предприятие

 

Регистрируйтесь!

Старт уже завтра!

или запишись через ВК



Конфигурационные файлы 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).
Примеры директив
  • Host — к какому серверу применяются настройки.
  • User — имя пользователя для логина.
  • Port — порт для подключения.
  • IdentityFile — путь к приватному ключу.
  • ProxyJump — настройка прыжкового хоста.
  • Port — порт, который прослушивает демон.
  • PermitRootLogin — разрешить ли логин под root.
  • PasswordAuthentication — разрешить аутентификацию по паролю.
  • AllowUsers — белый список пользователей.
  • X11Forwarding — разрешить ли форвардинг X11.
Контекст безопасности Повышает удобство и безопасность клиентской машины (например, принудительное использование ключей). Определяет политику безопасности всего сервера. Ошибки здесь могут привести к компрометации.
Применение изменений Изменения применяются немедленно при следующем запуске клиента 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-пользователя.

Как они взаимодействуют?

Процесс установления соединения — это "переговоры" между клиентом и сервером, где каждый руководствуется своими правилами.

  1. Пользователь вводит ssh myserver.
  2. Клиент ssh читает свой ssh_config, находит секцию Host myserver и применяет параметры (например, подставляет порт 2222 и ключ).
  3. Клиент инициирует соединение с сервером на указанный порт.
  4. Демон sshd на сервере, прослушивающий этот порт, получает запрос на соединение.
  5. Демон читает свой sshd_config и проверяет, разрешено ли соединение с этого IP, разрешена ли аутентификация по ключу и т.д.
  6. Если параметры, предложенные клиентом (например, тип аутентификации), удовлетворяют правилам сервера, соединение устанавливается.

Важно помнить: правила сервера (sshd_config) имеют приоритет. Если клиент запросит X11-форвардинг, но на сервере он запрещен директивой X11Forwarding no, то форвардинг работать не будет.

Заключение

Понимание дихотомии ssh_config и sshd_config — это не просто вопрос теории. Это фундаментальный навык для:

  • Безопасности: Правильная настройка sshd_config защищает ваш сервер от несанкционированного доступа.
  • Эффективности: Грамотное использование ssh_config экономит время и избавляет от рутинного ввода параметров.
  • Отладки: Когда соединение не устанавливается, вы будете знать, на какой стороне (клиент или сервер) искать проблему.

Разделяйте эти концепции в своем сознании, и управление SSH-доступом станет предсказуемой и эффективной задачей.

Вверх
Политика конфиденциальности Используя сайт вы даете согласие на обработку персональных данных