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 2222ListenAddressЧастоЛокальный адрес, который прослушивает sshd. Адрес может включать порт; убедитесь, что он существует на сервере.
ListenAddress 192.0.2.10AddressFamilyВыберите семейство адресов: любое, inet для IPv4 или inet6 для IPv6.
AddressFamily inetHostKeyЧастоПуть к закрытому ключу хоста сервера; это не ключ аутентификации пользователя. Защитите личный файл.
HostKey /etc/ssh/ssh_host_ed25519_keyHostCertificateПуть к сертификату хоста сервера, соответствующему настроенному ключу хоста.
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pubPasswordAuthenticationЧастоРазрешить или запретить аутентификацию по паролю. Проверьте другой метод входа, прежде чем отключать его.
PasswordAuthentication noPubkeyAuthenticationЧастоРазрешить или запретить аутентификацию с открытым ключом. Разрешения сервера и авторизованные ключи по-прежнему применяются.
PubkeyAuthentication yesKbdInteractiveAuthenticationЧастоРазрешить интерактивную аутентификацию с помощью клавиатуры. Запросы и доступные методы зависят от сервера и механизма аутентификации.
KbdInteractiveAuthentication yesAuthenticationMethodsЧастоТребуется один из списков методов, разделенных пробелами; каждый метод в списке, разделенный запятыми, должен завершиться успешно. Каждый метод также должен быть включен.
AuthenticationMethods publickey,keyboard-interactivePermitRootLoginЧастоУправление входом в систему root: да, запретить пароль, только принудительные команды или нет. Сначала проверьте альтернативный вход администратора.
PermitRootLogin noPermitEmptyPasswordsРазрешить учетным записям с пустыми паролями проходить аутентификацию с использованием аутентификации по паролю. Включать это небезопасно.
PermitEmptyPasswords noAuthorizedKeysFileЧастоПути к файлам, содержащим авторизованные открытые ключи. Относительные пути определяются из домашнего каталога пользователя; токены поддерживаются.
AuthorizedKeysFile .ssh/authorized_keysStrictModesЧастоПрежде чем принять вход в систему, проверьте права собственности и права доступа к пользовательским файлам и домашним каталогам.
StrictModes yesAllowUsersЧастоРазрешить только указанные шаблоны имен пользователей; Шаблоны USER@HOST могут ограничить происхождение. Доступ к учетной записи также подлежит другим ограничениям.
AllowUsers alice bobDenyUsersЗапретить совпадение шаблонов имен пользователей. Правила запрета имеют приоритет над соответствующими правилами разрешения.
DenyUsers guestAllowGroupsРазрешать доступ только пользователям из соответствующих именованных групп с учетом других правил доступа.
AllowGroups sshusersDenyGroupsЗапретить пользователям входить в соответствующие именованные группы; используются имена групп, а не числовые идентификаторы.
DenyGroups restrictedAllowTcpForwardingЧастоУправление пересылкой TCP: да или все, нет, локально или удаленно. Одно это не может предотвратить пересылку пользователями с неограниченным доступом к оболочке.
AllowTcpForwarding localDisableForwardingОтключите функции переадресации, отменяя другие настройки переадресации. Это может привести к поломке туннелей и пересылки агента или X11.
DisableForwarding yesGatewayPortsЧастоУправляйте адресами привязки удаленной пересылки: нет обратной связи привязки, да привязывается подстановочный знак, а параметр clientspecified разрешает адреса, выбранные клиентом. Открытие портов имеет последствия для безопасности.
GatewayPorts noPermitOpenОграничить места назначения для локальной пересылки TCP; используйте записи хост:порт, любые или нет. Имена не разрешаются для сопоставления.
PermitOpen db.example.com:5432PermitListenОграничить прослушиваемые адреса и порты для удаленной переадресации; GatewayPorts также влияет на привязку.
PermitListen localhost:18080AllowAgentForwardingРазрешить пересылку агента аутентификации SSH. Удаленный процесс, имеющий доступ к сокету агента, может запрашивать подписи.
AllowAgentForwarding noAllowStreamLocalForwardingУправляйте переадресацией сокетов Unix-домена: да или все, нет, локально или удаленно.
AllowStreamLocalForwarding noX11ForwardingВключите переадресацию дисплея X11. Включайте только там, где это необходимо, и осознавайте риск доступа к удаленному дисплею.
X11Forwarding noMaxAuthTriesЧастоМаксимальное количество попыток аутентификации на одно соединение перед отключением. Сервер может регистрировать сбои раньше.
MaxAuthTries 4MaxSessionsЧастоМаксимальное количество сеансов оболочки, входа в систему или подсистемы на одно SSH-соединение. Установка нуля предотвращает сеансы, но все же может разрешить пересылку.
MaxSessions 10MaxStartupsЧастоОграничьте неаутентифицированные соединения. Форма start:rate:full постепенно отклоняет соединения под нагрузкой.
MaxStartups 10:30:100LoginGraceTimeЧастоВремя, отведенное для аутентификации; нулевая продолжительность означает отсутствие ограничений по времени.
LoginGraceTime 60sClientAliveIntervalЧастоИнтервал в секундах для зашифрованных проб активности клиента на уровне SSH; ноль отключает эти датчики.
ClientAliveInterval 30ClientAliveCountMaxЧастоКоличество оставшихся без ответа проверок активности клиента на уровне SSH, допущенных перед отключением. Используйте с ClientAliveInterval.
ClientAliveCountMax 3TCPKeepAliveУправляйте сообщениями поддержки активности TCP. Они отличаются от зашифрованных зондов активности клиента SSH.
TCPKeepAlive yesUsePAMЧастоВключите интеграцию PAM в сборках, которые ее поддерживают. Политика PAM и доступные методы аутентификации различаются в зависимости от системы.
UsePAM yesPermitTTYРазрешить выделение псевдотерминала. Отключение этого параметра повлияет на интерактивные сеансы.
PermitTTY yesForceCommandЗамените запрошенную команду фиксированной командой. Тщательно проверьте доступ и ограничения перед включением.
ForceCommand internal-sftpSubsystemЧастоОпределите именованную подсистему и ее команду; Internal-sftp — это встроенный SFTP-сервер.
Subsystem sftp internal-sftpChrootDirectoryОграничьте сеанс каталогом после аутентификации. Владение каталогами и разрешения строго проверяются; предоставить необходимые файлы для предполагаемого сеанса.
ChrootDirectory /srv/sftp/%uMatchЧастоЗапустите условный блок для сопоставления пользователей, групп, адресов или других поддерживаемых критериев. Внутри него разрешены только определенные директивы.
Match User sftpuser
ForceCommand internal-sftpIncludeЧастоВключите файлы конфигурации по пути или общему значению. Порядок имеет значение, поскольку обычно применяется первое полученное значение.
Include /etc/ssh/sshd_config.d/*.confLogLevelЧастоУстановите уровень детализации журнала, например ТИХИЙ, ФАТАЛЬНЫЙ, ОШИБКА, ИНФОРМАЦИЯ, ПОДРОБНЫЙ или ОТЛАДКА. Подробные журналы могут содержать конфиденциальную информацию.
LogLevel INFOSyslogFacilityВыберите функцию системного журнала, используемую для сообщений сервера SSH; Конфигурация системного журналирования определяет, где они появляются.
SyslogFacility AUTHBannerОтправьте содержимое указанного файла перед аутентификацией. Используйте none, чтобы отключить настроенный баннер.
Banner /etc/issue.netAcceptEnvРазрешить именованные переменные среды, предоставляемые клиентом. Некоторые переменные могут обходить ограниченные среды, поэтому разрешайте только то, что необходимо.
AcceptEnv LANG LC_*PermitUserEnvironmentУправляйте настройками среды, предоставляемыми пользователем. Их включение позволяет обойти ограничения через переменные среды.
PermitUserEnvironment noPrintMotdКонтролируйте, будет ли sshd печатать сообщение дня при интерактивном входе в систему. PAM или другой сервис также может его распечатать.
PrintMotd noCompressionУправляйте сжатием. Поддерживаемые значения и время зависят от версии OpenSSH.
Compression noRekeyLimitУстановите порог данных и, при необходимости, временной интервал для смены ключей. Используйте значения, соответствующие версии сервера.
RekeyLimit 1G 1hCiphersВыберите разрешенные алгоритмы шифрования. Замена списка по умолчанию может снизить совместимость; используйте шифр ssh -Q для проверки алгоритмов, поддерживаемых клиентом.
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.comKexAlgorithmsВыберите алгоритмы обмена ключами. Ограничение этого списка может привести к поломке клиентов; проверьте поддержку с обеих сторон.
KexAlgorithms curve25519-sha256PubkeyAcceptedAlgorithmsВыберите разрешенные алгоритмы подписи с открытым ключом для аутентификации пользователя. Проверьте совместимость перед изменением списка по умолчанию.
PubkeyAcceptedAlgorithms ssh-ed25519HostKeyAlgorithmsВыберите алгоритмы подписи ключей хоста, предлагаемые сервером. Настроенный ключ хоста должен поддерживать выбранный алгоритм.
HostKeyAlgorithms ssh-ed25519TrustedUserCAKeysФайл, содержащий открытые ключи центра сертификации доверенных пользователей для аутентификации сертификата.
TrustedUserCAKeys /etc/ssh/user_ca.pubRevokedKeysФайл, содержащий отозванные открытые ключи или список отозванных ключей. Отсутствующий или нечитаемый файл конфигурации может помешать аутентификации с открытым ключом.
RevokedKeys /etc/ssh/revoked_keysAuthorizedPrincipalsFileПринципы списка файлов, разрешенные для сертификата пользователя, подписанного доверенным центром сертификации; расширение токена поддерживается.
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%uVersionAddendumДобавьте текст к баннеру протокола SSH; none отключает добавленный текст.
VersionAddendum noneAuthorizedKeysCommandЗапустите надежную программу, принадлежащую пользователю root, чтобы получить открытые ключи. Настройте учетную запись выполнения и следуйте требованиям руководства по владению.
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %uAuthorizedKeysCommandUserУчетная запись, используемая для запуска AuthorizedKeysCommand; рекомендуется использовать выделенную учетную запись.
AuthorizedKeysCommandUser sshkeysAuthorizedPrincipalsCommandЗапустите доверенную программу, чтобы получить разрешенные субъекты сертификатов. Настройте учетную запись выполнения отдельно.
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %uAuthorizedPrincipalsCommandUserУчетная запись, используемая для запуска AuthorizedPrincipalsCommand; используйте выделенную учетную запись.
AuthorizedPrincipalsCommandUser sshprincipalsCASignatureAlgorithmsОграничить алгоритмы подписи центра сертификации, принимаемые для сертификатов SSH. Перед внесением изменений проверьте совместимость центра сертификации и клиента.
CASignatureAlgorithms ssh-ed25519ChannelTimeoutСрок действия неактивных каналов по типу канала и продолжительности; доступность и поддерживаемые типы каналов зависят от версии. По истечении срока действия SSH-соединение не прерывается.
ChannelTimeout session=1hExposeAuthInfoПредоставлять информацию аутентификации через временный файл, на который ссылается SSH_USER_AUTH; рассмотрите возможность доступа к данным аутентификации.
ExposeAuthInfo noFingerprintHashВыберите хеш, используемый для отпечатков ключей, например sha256 или md5. Предпочитайте SHA-256.
FingerprintHash sha256GSSAPIAuthenticationУправляйте аутентификацией пользователей GSSAPI, если это поддерживается сборкой сервера.
GSSAPIAuthentication noGSSAPICleanupCredentialsКонтролируйте, уничтожаются ли делегированные учетные данные GSSAPI при выходе из системы; Поддержка сборки варьируется.
GSSAPICleanupCredentials yesGSSAPIDelegateCredentialsУправляйте хранением делегированных учетных данных GSSAPI для пользовательских сеансов, если это поддерживается.
GSSAPIDelegateCredentials noGSSAPIStrictAcceptorCheckКонтролируйте, требует ли сервер правильный идентификатор хоста GSSAPI. Отключение проверки имеет последствия для безопасности.
GSSAPIStrictAcceptorCheck yesHostbasedAcceptedAlgorithmsВыберите алгоритмы, принятые для аутентификации на основе хоста. Доступность зависит от версии OpenSSH.
HostbasedAcceptedAlgorithms ssh-ed25519HostbasedAuthenticationУправление аутентификацией на основе хоста; для этого требуется дополнительное доверие и настройка хоста.
HostbasedAuthentication noHostbasedUsesNameFromPacketOnlyУкажите, будет ли проверка подлинности на основе хоста использовать имя, предоставленное клиентом, вместо DNS. Рассмотрите последствия доверия.
HostbasedUsesNameFromPacketOnly noHostKeyAgentУкажите сокет агента, используемый для доступа к закрытым ключам хоста. Агент и его сокет должны быть доступны для sshd.
HostKeyAgent /run/ssh-hostkey-agent.sockIgnoreRhostsКонтролировать использование файлов rhosts или shhosts для каждого пользователя для аутентификации на основе хоста; принятые значения различаются в зависимости от версии.
IgnoreRhosts yesIgnoreUserKnownHostsКонтролируйте, будут ли игнорироваться специфичные для пользователя файлыknown_hosts во время аутентификации на основе хоста.
IgnoreUserKnownHosts yesKerberosAuthenticationУправляйте аутентификацией по паролю Kerberos, если оно создано и настроено с поддержкой Kerberos.
KerberosAuthentication noKerberosGetAFSTokenУправляйте получением токена AFS для пользователя, аутентифицированного Kerberos, если сборка поддерживает это.
KerberosGetAFSToken noKerberosOrLocalPasswdКонтролируйте, будет ли неудачная проверка пароля Kerberos возвращаться к аутентификации по локальному паролю.
KerberosOrLocalPasswd noKerberosTicketCleanupУправляйте удалением кэша билетов Kerberos пользователя при выходе из системы, если это поддерживается.
KerberosTicketCleanup yesLogVerboseПереопределить подробность журнала для сопоставления исходных местоположений. Он предназначен для устранения неполадок и может раскрыть конфиденциальную информацию.
LogVerbose kex.c:*:1000ModuliFileПуть к файлу модулей, используемому для обмена группой Диффи-Хеллмана; поддерживайте его в соответствии с указаниями платформы.
ModuliFile /etc/ssh/moduliPAMServiceNameВыберите имя службы PAM в сборках, поддерживающих эту директиву; Политика PAM для выбранной службы должна существовать.
PAMServiceName sshdPermitTunnelУправление переадресацией устройства настройки: да, точка-точка, Ethernet или нет. Могут потребоваться дополнительные системные привилегии и настройка.
PermitTunnel noPermitUserRCУправляйте выполнением rc-файла SSH пользователя. Отключение может повлиять на настройку пользовательского сеанса.
PermitUserRC noPerSourceMaxStartupsОграничьте одновременные неаутентифицированные соединения для каждого адреса источника или группы источников; Поддержка версий варьируется.
PerSourceMaxStartups 10PerSourceNetBlockSizeУстановите длину префиксов IPv4 и IPv6, используемых для группировки источников для ограничения количества подключений для каждого источника.
PerSourceNetBlockSize 32:128PerSourcePenaltiesНастройте штрафы за проблемные источники. Поддерживаемые типы штрафов, значения и настройки по умолчанию различаются в зависимости от версии OpenSSH.
PerSourcePenalties noPerSourcePenaltyExemptListСписок адресов источников или диапазонов CIDR, освобожденных от штрафов за каждый источник; обеспечить узкий охват исключений.
PerSourcePenaltyExemptList 192.0.2.0/24PidFileПуть к файлу идентификатора процесса сервера. Убедитесь, что диспетчер служб и разрешения соответствуют этому пути.
PidFile /run/sshd.pidPrintLastLogУправляйте печатью предыдущего времени входа в систему для интерактивного входа. Доступность может зависеть от поддержки платформы.
PrintLastLog yesPubkeyAuthOptionsУстановите параметры аутентификации с открытым ключом, включая требования касания ключа безопасности или проверки, если это поддерживается.
PubkeyAuthOptions touch-requiredRefuseConnectionОтказаться от соединения, обычно внутри блока Match. Доступность зависит от версии.
Match User blocked
RefuseConnection yesRequiredRSASizeУстановите минимальный размер ключа RSA, принимаемый sshd. Более низкие значения могут ослабить безопасность, а в некоторых версиях установлен минимум.
RequiredRSASize 3072RDomainВыберите домен маршрутизации для сеанса на платформах, поддерживающих домены маршрутизации. Это зависит от платформы.
RDomain 1SecurityKeyProviderПуть к библиотеке промежуточного программного обеспечения ключей безопасности FIDO; если оставить его неустановленным, используется встроенная поддержка, если она доступна.
SecurityKeyProvider /usr/local/lib/libsk-libfido2.soSshdAuthPathПуть к помощнику аутентификации sshd на версиях и платформах, которые его поддерживают. Обычно управляется пакетом.
SshdAuthPath /usr/libexec/sshd-authSshdSessionPathПуть к помощнику сеанса sshd в версиях и платформах, которые его поддерживают. Обычно управляется пакетом.
SshdSessionPath /usr/libexec/sshd-sessionStreamLocalBindMaskУстановите маску создания восьмеричного режима файла для сокета пересылки домена Unix.
StreamLocalBindMask 0177StreamLocalBindUnlinkУкажите, будет ли удален существующий сокет Unix-домена перед созданием прослушивателя пересылки.
StreamLocalBindUnlink noUnusedConnectionTimeoutЗакройте соединения без открытых каналов по истечении указанного времени. Затронутое поведение и доступность зависят от версии.
UnusedConnectionTimeout 5mX11DisplayOffsetУстановите первый номер дисплея, доступный для переадресации X11.
X11DisplayOffset 10X11UseLocalhostПривяжите сервер пересылки X11 к шлейфу, если он включен; его отключение может расширить отображение дисплея.
X11UseLocalhost yesXAuthLocationПуть к программе xauth, используемой для пересылки X11, где это применимо.
XAuthLocation /usr/bin/xauthIPQoSУстановите маркировку качества обслуживания IP для интерактивных и неинтерактивных сеансов. Сетевые устройства могут интерпретировать или игнорировать эту маркировку.
IPQoS lowdelay throughputMACsВыберите алгоритмы кода аутентификации сообщения. Изменение настроек по умолчанию может повлиять на безопасность и совместимость клиентов.
MACs hmac-sha2-256-etm@openssh.comSetEnvУстановите переменные среды для дочерних сеансов. Эти значения переопределяют переменные, принятые из файлов клиентов или пользовательской среды.
SetEnv LANG=en_US.UTF-8UseDNSУправляйте обратным поиском 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 г.