sshd_config

Настройте сервер OpenSSH: прослушивание, аутентификацию, пересылку, контроль доступа и ведение журнала.

Перед выполнением

Конфигурация сервера отличается от конфигурации клиента ssh_config. Пути, поддерживаемые параметры и значения по умолчанию зависят от операционной системы и версии OpenSSH. Оставьте существующий административный сеанс открытым и доступным путь восстановления. Прежде чем применять изменения, проверьте фактическую конфигурацию с помощью sshd -t и проверьте действующие настройки с помощью sshd -T; для этих команд могут потребоваться права администратора. Подтвердите второй вход в систему перед закрытием исходного сеанса. Не копируйте значения примера вслепую.

После применения изменений проверьте в новом сеансе SSH вход и ожидаемую работу. Оставьте текущий сеанс открытым до успешной проверки, чтобы при необходимости восстановить конфигурацию.

Примеры

Пример конфигурации сервера. Адаптируйте аутентификацию, пути и правила доступа к вашей среде.

Port 22
PermitRootLogin no
PubkeyAuthentication yes
AllowTcpForwarding yes

Проверьте синтаксис и проверьте действующие настройки сервера перед применением изменений.

sudo sshd -t
sudo sshd -T

Параметры и примеры

PortЧасто

Прослушивание TCP-порта; допускается использование нескольких директив порта. Убедитесь, что брандмауэр и клиенты разрешают выбранный порт.

Пример
Port 2222
ListenAddressЧасто

Локальный адрес, который прослушивает sshd. Адрес может включать порт; убедитесь, что он существует на сервере.

Пример
ListenAddress 192.0.2.10
AddressFamily

Выберите семейство адресов: любое, inet для IPv4 или inet6 для IPv6.

Пример
AddressFamily inet
HostKeyЧасто

Путь к закрытому ключу хоста сервера; это не ключ аутентификации пользователя. Защитите личный файл.

Пример
HostKey /etc/ssh/ssh_host_ed25519_key
HostCertificate

Путь к сертификату хоста сервера, соответствующему настроенному ключу хоста.

Пример
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
PasswordAuthenticationЧасто

Разрешить или запретить аутентификацию по паролю. Проверьте другой метод входа, прежде чем отключать его.

Пример
PasswordAuthentication no
PubkeyAuthenticationЧасто

Разрешить или запретить аутентификацию с открытым ключом. Разрешения сервера и авторизованные ключи по-прежнему применяются.

Пример
PubkeyAuthentication yes
KbdInteractiveAuthenticationЧасто

Разрешить интерактивную аутентификацию с помощью клавиатуры. Запросы и доступные методы зависят от сервера и механизма аутентификации.

Пример
KbdInteractiveAuthentication yes
AuthenticationMethodsЧасто

Требуется один из списков методов, разделенных пробелами; каждый метод в списке, разделенный запятыми, должен завершиться успешно. Каждый метод также должен быть включен.

Пример
AuthenticationMethods publickey,keyboard-interactive
PermitRootLoginЧасто

Управление входом в систему root: да, запретить пароль, только принудительные команды или нет. Сначала проверьте альтернативный вход администратора.

Пример
PermitRootLogin no
PermitEmptyPasswords

Разрешить учетным записям с пустыми паролями проходить аутентификацию с использованием аутентификации по паролю. Включать это небезопасно.

Пример
PermitEmptyPasswords no
AuthorizedKeysFileЧасто

Пути к файлам, содержащим авторизованные открытые ключи. Относительные пути определяются из домашнего каталога пользователя; токены поддерживаются.

Пример
AuthorizedKeysFile .ssh/authorized_keys
StrictModesЧасто

Прежде чем принять вход в систему, проверьте права собственности и права доступа к пользовательским файлам и домашним каталогам.

Пример
StrictModes yes
AllowUsersЧасто

Разрешить только указанные шаблоны имен пользователей; Шаблоны USER@HOST могут ограничить происхождение. Доступ к учетной записи также подлежит другим ограничениям.

Пример
AllowUsers alice bob
DenyUsers

Запретить совпадение шаблонов имен пользователей. Правила запрета имеют приоритет над соответствующими правилами разрешения.

Пример
DenyUsers guest
AllowGroups

Разрешать доступ только пользователям из соответствующих именованных групп с учетом других правил доступа.

Пример
AllowGroups sshusers
DenyGroups

Запретить пользователям входить в соответствующие именованные группы; используются имена групп, а не числовые идентификаторы.

Пример
DenyGroups restricted
AllowTcpForwardingЧасто

Управление пересылкой TCP: да или все, нет, локально или удаленно. Одно это не может предотвратить пересылку пользователями с неограниченным доступом к оболочке.

Пример
AllowTcpForwarding local
DisableForwarding

Отключите функции переадресации, отменяя другие настройки переадресации. Это может привести к поломке туннелей и пересылки агента или X11.

Пример
DisableForwarding yes
GatewayPortsЧасто

Управляйте адресами привязки удаленной пересылки: нет обратной связи привязки, да привязывается подстановочный знак, а параметр clientspecified разрешает адреса, выбранные клиентом. Открытие портов имеет последствия для безопасности.

Пример
GatewayPorts no
PermitOpen

Ограничить места назначения для локальной пересылки TCP; используйте записи хост:порт, любые или нет. Имена не разрешаются для сопоставления.

Пример
PermitOpen db.example.com:5432
PermitListen

Ограничить прослушиваемые адреса и порты для удаленной переадресации; GatewayPorts также влияет на привязку.

Пример
PermitListen localhost:18080
AllowAgentForwarding

Разрешить пересылку агента аутентификации SSH. Удаленный процесс, имеющий доступ к сокету агента, может запрашивать подписи.

Пример
AllowAgentForwarding no
AllowStreamLocalForwarding

Управляйте переадресацией сокетов Unix-домена: да или все, нет, локально или удаленно.

Пример
AllowStreamLocalForwarding no
X11Forwarding

Включите переадресацию дисплея X11. Включайте только там, где это необходимо, и осознавайте риск доступа к удаленному дисплею.

Пример
X11Forwarding no
MaxAuthTriesЧасто

Максимальное количество попыток аутентификации на одно соединение перед отключением. Сервер может регистрировать сбои раньше.

Пример
MaxAuthTries 4
MaxSessionsЧасто

Максимальное количество сеансов оболочки, входа в систему или подсистемы на одно SSH-соединение. Установка нуля предотвращает сеансы, но все же может разрешить пересылку.

Пример
MaxSessions 10
MaxStartupsЧасто

Ограничьте неаутентифицированные соединения. Форма start:rate:full постепенно отклоняет соединения под нагрузкой.

Пример
MaxStartups 10:30:100
LoginGraceTimeЧасто

Время, отведенное для аутентификации; нулевая продолжительность означает отсутствие ограничений по времени.

Пример
LoginGraceTime 60s
ClientAliveIntervalЧасто

Интервал в секундах для зашифрованных проб активности клиента на уровне SSH; ноль отключает эти датчики.

Пример
ClientAliveInterval 30
ClientAliveCountMaxЧасто

Количество оставшихся без ответа проверок активности клиента на уровне SSH, допущенных перед отключением. Используйте с ClientAliveInterval.

Пример
ClientAliveCountMax 3
TCPKeepAlive

Управляйте сообщениями поддержки активности TCP. Они отличаются от зашифрованных зондов активности клиента SSH.

Пример
TCPKeepAlive yes
UsePAMЧасто

Включите интеграцию PAM в сборках, которые ее поддерживают. Политика PAM и доступные методы аутентификации различаются в зависимости от системы.

Пример
UsePAM yes
PermitTTY

Разрешить выделение псевдотерминала. Отключение этого параметра повлияет на интерактивные сеансы.

Пример
PermitTTY yes
ForceCommand

Замените запрошенную команду фиксированной командой. Тщательно проверьте доступ и ограничения перед включением.

Пример
ForceCommand internal-sftp
SubsystemЧасто

Определите именованную подсистему и ее команду; Internal-sftp — это встроенный SFTP-сервер.

Пример
Subsystem sftp internal-sftp
ChrootDirectory

Ограничьте сеанс каталогом после аутентификации. Владение каталогами и разрешения строго проверяются; предоставить необходимые файлы для предполагаемого сеанса.

Пример
ChrootDirectory /srv/sftp/%u
MatchЧасто

Запустите условный блок для сопоставления пользователей, групп, адресов или других поддерживаемых критериев. Внутри него разрешены только определенные директивы.

Пример
Match User sftpuser
    ForceCommand internal-sftp
IncludeЧасто

Включите файлы конфигурации по пути или общему значению. Порядок имеет значение, поскольку обычно применяется первое полученное значение.

Пример
Include /etc/ssh/sshd_config.d/*.conf
LogLevelЧасто

Установите уровень детализации журнала, например ТИХИЙ, ФАТАЛЬНЫЙ, ОШИБКА, ИНФОРМАЦИЯ, ПОДРОБНЫЙ или ОТЛАДКА. Подробные журналы могут содержать конфиденциальную информацию.

Пример
LogLevel INFO
SyslogFacility

Выберите функцию системного журнала, используемую для сообщений сервера SSH; Конфигурация системного журналирования определяет, где они появляются.

Пример
SyslogFacility AUTH
Banner

Отправьте содержимое указанного файла перед аутентификацией. Используйте none, чтобы отключить настроенный баннер.

Пример
Banner /etc/issue.net
AcceptEnv

Разрешить именованные переменные среды, предоставляемые клиентом. Некоторые переменные могут обходить ограниченные среды, поэтому разрешайте только то, что необходимо.

Пример
AcceptEnv LANG LC_*
PermitUserEnvironment

Управляйте настройками среды, предоставляемыми пользователем. Их включение позволяет обойти ограничения через переменные среды.

Пример
PermitUserEnvironment no
PrintMotd

Контролируйте, будет ли sshd печатать сообщение дня при интерактивном входе в систему. PAM или другой сервис также может его распечатать.

Пример
PrintMotd no
Compression

Управляйте сжатием. Поддерживаемые значения и время зависят от версии OpenSSH.

Пример
Compression no
RekeyLimit

Установите порог данных и, при необходимости, временной интервал для смены ключей. Используйте значения, соответствующие версии сервера.

Пример
RekeyLimit 1G 1h
Ciphers

Выберите разрешенные алгоритмы шифрования. Замена списка по умолчанию может снизить совместимость; используйте шифр ssh -Q для проверки алгоритмов, поддерживаемых клиентом.

Пример
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com
KexAlgorithms

Выберите алгоритмы обмена ключами. Ограничение этого списка может привести к поломке клиентов; проверьте поддержку с обеих сторон.

Пример
KexAlgorithms curve25519-sha256
PubkeyAcceptedAlgorithms

Выберите разрешенные алгоритмы подписи с открытым ключом для аутентификации пользователя. Проверьте совместимость перед изменением списка по умолчанию.

Пример
PubkeyAcceptedAlgorithms ssh-ed25519
HostKeyAlgorithms

Выберите алгоритмы подписи ключей хоста, предлагаемые сервером. Настроенный ключ хоста должен поддерживать выбранный алгоритм.

Пример
HostKeyAlgorithms ssh-ed25519
TrustedUserCAKeys

Файл, содержащий открытые ключи центра сертификации доверенных пользователей для аутентификации сертификата.

Пример
TrustedUserCAKeys /etc/ssh/user_ca.pub
RevokedKeys

Файл, содержащий отозванные открытые ключи или список отозванных ключей. Отсутствующий или нечитаемый файл конфигурации может помешать аутентификации с открытым ключом.

Пример
RevokedKeys /etc/ssh/revoked_keys
AuthorizedPrincipalsFile

Принципы списка файлов, разрешенные для сертификата пользователя, подписанного доверенным центром сертификации; расширение токена поддерживается.

Пример
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u
VersionAddendum

Добавьте текст к баннеру протокола SSH; none отключает добавленный текст.

Пример
VersionAddendum none
AuthorizedKeysCommand

Запустите надежную программу, принадлежащую пользователю root, чтобы получить открытые ключи. Настройте учетную запись выполнения и следуйте требованиям руководства по владению.

Пример
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %u
AuthorizedKeysCommandUser

Учетная запись, используемая для запуска AuthorizedKeysCommand; рекомендуется использовать выделенную учетную запись.

Пример
AuthorizedKeysCommandUser sshkeys
AuthorizedPrincipalsCommand

Запустите доверенную программу, чтобы получить разрешенные субъекты сертификатов. Настройте учетную запись выполнения отдельно.

Пример
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %u
AuthorizedPrincipalsCommandUser

Учетная запись, используемая для запуска AuthorizedPrincipalsCommand; используйте выделенную учетную запись.

Пример
AuthorizedPrincipalsCommandUser sshprincipals
CASignatureAlgorithms

Ограничить алгоритмы подписи центра сертификации, принимаемые для сертификатов SSH. Перед внесением изменений проверьте совместимость центра сертификации и клиента.

Пример
CASignatureAlgorithms ssh-ed25519
ChannelTimeout

Срок действия неактивных каналов по типу канала и продолжительности; доступность и поддерживаемые типы каналов зависят от версии. По истечении срока действия SSH-соединение не прерывается.

Пример
ChannelTimeout session=1h
ExposeAuthInfo

Предоставлять информацию аутентификации через временный файл, на который ссылается SSH_USER_AUTH; рассмотрите возможность доступа к данным аутентификации.

Пример
ExposeAuthInfo no
FingerprintHash

Выберите хеш, используемый для отпечатков ключей, например sha256 или md5. Предпочитайте SHA-256.

Пример
FingerprintHash sha256
GSSAPIAuthentication

Управляйте аутентификацией пользователей GSSAPI, если это поддерживается сборкой сервера.

Пример
GSSAPIAuthentication no
GSSAPICleanupCredentials

Контролируйте, уничтожаются ли делегированные учетные данные GSSAPI при выходе из системы; Поддержка сборки варьируется.

Пример
GSSAPICleanupCredentials yes
GSSAPIDelegateCredentials

Управляйте хранением делегированных учетных данных GSSAPI для пользовательских сеансов, если это поддерживается.

Пример
GSSAPIDelegateCredentials no
GSSAPIStrictAcceptorCheck

Контролируйте, требует ли сервер правильный идентификатор хоста GSSAPI. Отключение проверки имеет последствия для безопасности.

Пример
GSSAPIStrictAcceptorCheck yes
HostbasedAcceptedAlgorithms

Выберите алгоритмы, принятые для аутентификации на основе хоста. Доступность зависит от версии OpenSSH.

Пример
HostbasedAcceptedAlgorithms ssh-ed25519
HostbasedAuthentication

Управление аутентификацией на основе хоста; для этого требуется дополнительное доверие и настройка хоста.

Пример
HostbasedAuthentication no
HostbasedUsesNameFromPacketOnly

Укажите, будет ли проверка подлинности на основе хоста использовать имя, предоставленное клиентом, вместо DNS. Рассмотрите последствия доверия.

Пример
HostbasedUsesNameFromPacketOnly no
HostKeyAgent

Укажите сокет агента, используемый для доступа к закрытым ключам хоста. Агент и его сокет должны быть доступны для sshd.

Пример
HostKeyAgent /run/ssh-hostkey-agent.sock
IgnoreRhosts

Контролировать использование файлов rhosts или shhosts для каждого пользователя для аутентификации на основе хоста; принятые значения различаются в зависимости от версии.

Пример
IgnoreRhosts yes
IgnoreUserKnownHosts

Контролируйте, будут ли игнорироваться специфичные для пользователя файлыknown_hosts во время аутентификации на основе хоста.

Пример
IgnoreUserKnownHosts yes
KerberosAuthentication

Управляйте аутентификацией по паролю Kerberos, если оно создано и настроено с поддержкой Kerberos.

Пример
KerberosAuthentication no
KerberosGetAFSToken

Управляйте получением токена AFS для пользователя, аутентифицированного Kerberos, если сборка поддерживает это.

Пример
KerberosGetAFSToken no
KerberosOrLocalPasswd

Контролируйте, будет ли неудачная проверка пароля Kerberos возвращаться к аутентификации по локальному паролю.

Пример
KerberosOrLocalPasswd no
KerberosTicketCleanup

Управляйте удалением кэша билетов Kerberos пользователя при выходе из системы, если это поддерживается.

Пример
KerberosTicketCleanup yes
LogVerbose

Переопределить подробность журнала для сопоставления исходных местоположений. Он предназначен для устранения неполадок и может раскрыть конфиденциальную информацию.

Пример
LogVerbose kex.c:*:1000
ModuliFile

Путь к файлу модулей, используемому для обмена группой Диффи-Хеллмана; поддерживайте его в соответствии с указаниями платформы.

Пример
ModuliFile /etc/ssh/moduli
PAMServiceName

Выберите имя службы PAM в сборках, поддерживающих эту директиву; Политика PAM для выбранной службы должна существовать.

Пример
PAMServiceName sshd
PermitTunnel

Управление переадресацией устройства настройки: да, точка-точка, Ethernet или нет. Могут потребоваться дополнительные системные привилегии и настройка.

Пример
PermitTunnel no
PermitUserRC

Управляйте выполнением rc-файла SSH пользователя. Отключение может повлиять на настройку пользовательского сеанса.

Пример
PermitUserRC no
PerSourceMaxStartups

Ограничьте одновременные неаутентифицированные соединения для каждого адреса источника или группы источников; Поддержка версий варьируется.

Пример
PerSourceMaxStartups 10
PerSourceNetBlockSize

Установите длину префиксов IPv4 и IPv6, используемых для группировки источников для ограничения количества подключений для каждого источника.

Пример
PerSourceNetBlockSize 32:128
PerSourcePenalties

Настройте штрафы за проблемные источники. Поддерживаемые типы штрафов, значения и настройки по умолчанию различаются в зависимости от версии OpenSSH.

Пример
PerSourcePenalties no
PerSourcePenaltyExemptList

Список адресов источников или диапазонов CIDR, освобожденных от штрафов за каждый источник; обеспечить узкий охват исключений.

Пример
PerSourcePenaltyExemptList 192.0.2.0/24
PidFile

Путь к файлу идентификатора процесса сервера. Убедитесь, что диспетчер служб и разрешения соответствуют этому пути.

Пример
PidFile /run/sshd.pid
PrintLastLog

Управляйте печатью предыдущего времени входа в систему для интерактивного входа. Доступность может зависеть от поддержки платформы.

Пример
PrintLastLog yes
PubkeyAuthOptions

Установите параметры аутентификации с открытым ключом, включая требования касания ключа безопасности или проверки, если это поддерживается.

Пример
PubkeyAuthOptions touch-required
RefuseConnection

Отказаться от соединения, обычно внутри блока Match. Доступность зависит от версии.

Пример
Match User blocked
    RefuseConnection yes
RequiredRSASize

Установите минимальный размер ключа RSA, принимаемый sshd. Более низкие значения могут ослабить безопасность, а в некоторых версиях установлен минимум.

Пример
RequiredRSASize 3072
RDomain

Выберите домен маршрутизации для сеанса на платформах, поддерживающих домены маршрутизации. Это зависит от платформы.

Пример
RDomain 1
SecurityKeyProvider

Путь к библиотеке промежуточного программного обеспечения ключей безопасности FIDO; если оставить его неустановленным, используется встроенная поддержка, если она доступна.

Пример
SecurityKeyProvider /usr/local/lib/libsk-libfido2.so
SshdAuthPath

Путь к помощнику аутентификации sshd на версиях и платформах, которые его поддерживают. Обычно управляется пакетом.

Пример
SshdAuthPath /usr/libexec/sshd-auth
SshdSessionPath

Путь к помощнику сеанса sshd в версиях и платформах, которые его поддерживают. Обычно управляется пакетом.

Пример
SshdSessionPath /usr/libexec/sshd-session
StreamLocalBindMask

Установите маску создания восьмеричного режима файла для сокета пересылки домена Unix.

Пример
StreamLocalBindMask 0177
StreamLocalBindUnlink

Укажите, будет ли удален существующий сокет Unix-домена перед созданием прослушивателя пересылки.

Пример
StreamLocalBindUnlink no
UnusedConnectionTimeout

Закройте соединения без открытых каналов по истечении указанного времени. Затронутое поведение и доступность зависят от версии.

Пример
UnusedConnectionTimeout 5m
X11DisplayOffset

Установите первый номер дисплея, доступный для переадресации X11.

Пример
X11DisplayOffset 10
X11UseLocalhost

Привяжите сервер пересылки X11 к шлейфу, если он включен; его отключение может расширить отображение дисплея.

Пример
X11UseLocalhost yes
XAuthLocation

Путь к программе xauth, используемой для пересылки X11, где это применимо.

Пример
XAuthLocation /usr/bin/xauth
IPQoS

Установите маркировку качества обслуживания IP для интерактивных и неинтерактивных сеансов. Сетевые устройства могут интерпретировать или игнорировать эту маркировку.

Пример
IPQoS lowdelay throughput
MACs

Выберите алгоритмы кода аутентификации сообщения. Изменение настроек по умолчанию может повлиять на безопасность и совместимость клиентов.

Пример
MACs hmac-sha2-256-etm@openssh.com
SetEnv

Установите переменные среды для дочерних сеансов. Эти значения переопределяют переменные, принятые из файлов клиентов или пользовательской среды.

Пример
SetEnv LANG=en_US.UTF-8
UseDNS

Управляйте обратным поиском DNS и проверкой подключения клиентов. Включение этого параметра может добавить задержку, если DNS работает медленно.

Пример
UseDNS no

Рекомендуемая начальная конфигурация

Для сервера с проверенным входом по открытому ключу, которому не нужна интерактивная аутентификация с клавиатуры. TCP-переадресация доступна вошедшим пользователям; удалённые слушающие порты ограничены loopback-адресом.

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PermitEmptyPasswords no
AllowTcpForwarding yes
GatewayPorts no

Эта конфигурация отключает вход по паролю и интерактивную аутентификацию, которая может включать PAM или одноразовые коды. Сначала проверьте вход другой учётной записью администратора с ключом. AllowTcpForwarding yes разрешает переадресацию вошедшим пользователям; ограничьте доступ при необходимости.

Сохраните текущий сеанс и возможность восстановления. Добавьте параметры в существующую конфигурацию с учётом порядка Include, предыдущих значений и блоков Match. Проверьте sshd -t и sshd -T, а для условий Match используйте sshd -T -C. Примените изменения через службу системы и проверьте второй вход, прежде чем закрыть первый сеанс.

Официальные источники

Проверено 27 октября 2026 г.