{
    "content": [
        {
            "type": "text",
            "text": "# SSHD_CONFIG (man)\n\n## NAME\n\nsshdconfig — OpenSSH daemon configuration file\n\n## DESCRIPTION\n\nsshd(8)  reads configuration data from /etc/ssh/sshdconfig (or the file specified with -f on\nthe command line).  The file contains keyword-argument pairs, one  per  line.   Unless  noted\notherwise,  for each keyword, the first obtained value will be used.  Lines starting with ‘#’\nand empty lines are interpreted as comments.  Arguments may optionally be enclosed in  double\nquotes (\") in order to represent arguments containing spaces.\n\n## Sections\n\n- **NAME**\n- **DESCRIPTION** (93 subsections)\n- **TIME FORMATS**\n- **TOKENS**\n- **FILES**\n- **SEE ALSO**\n- **AUTHORS**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "SSHD_CONFIG",
        "section": "",
        "mode": "man",
        "summary": "sshdconfig — OpenSSH daemon configuration file",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "sftp-server",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/sftp-server/8/json"
            },
            {
                "name": "sshd",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/sshd/8/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 23,
                "subsections": [
                    {
                        "name": "AcceptEnv",
                        "lines": 10
                    },
                    {
                        "name": "AddressFamily",
                        "lines": 3
                    },
                    {
                        "name": "AllowAgentForwarding",
                        "lines": 4
                    },
                    {
                        "name": "AllowGroups",
                        "lines": 10
                    },
                    {
                        "name": "AllowStreamLocalForwarding",
                        "lines": 7
                    },
                    {
                        "name": "AllowTcpForwarding",
                        "lines": 7
                    },
                    {
                        "name": "AllowUsers",
                        "lines": 12
                    },
                    {
                        "name": "AuthenticationMethods",
                        "lines": 31
                    },
                    {
                        "name": "AuthorizedKeysCommand",
                        "lines": 10
                    },
                    {
                        "name": "AuthorizedKeysCommandUser",
                        "lines": 5
                    },
                    {
                        "name": "AuthorizedKeysFile",
                        "lines": 8
                    },
                    {
                        "name": "AuthorizedPrincipalsCommand",
                        "lines": 12
                    },
                    {
                        "name": "AuthorizedPrincipalsCommandUser",
                        "lines": 5
                    },
                    {
                        "name": "AuthorizedPrincipalsFile",
                        "lines": 22
                    },
                    {
                        "name": "CASignatureAlgorithms",
                        "lines": 17
                    },
                    {
                        "name": "ChannelTimeout",
                        "lines": 49
                    },
                    {
                        "name": "ChrootDirectory",
                        "lines": 20
                    },
                    {
                        "name": "Ciphers",
                        "lines": 29
                    },
                    {
                        "name": "ClientAliveCountMax",
                        "lines": 14
                    },
                    {
                        "name": "ClientAliveInterval",
                        "lines": 5
                    },
                    {
                        "name": "Compression",
                        "lines": 4
                    },
                    {
                        "name": "DebianBanner",
                        "lines": 3
                    },
                    {
                        "name": "DenyGroups",
                        "lines": 9
                    },
                    {
                        "name": "DenyUsers",
                        "lines": 12
                    },
                    {
                        "name": "DisableForwarding",
                        "lines": 4
                    },
                    {
                        "name": "ExposeAuthInfo",
                        "lines": 5
                    },
                    {
                        "name": "FingerprintHash",
                        "lines": 3
                    },
                    {
                        "name": "ForceCommand",
                        "lines": 8
                    },
                    {
                        "name": "GatewayPorts",
                        "lines": 10
                    },
                    {
                        "name": "GSSAPIAuthentication",
                        "lines": 2
                    },
                    {
                        "name": "GSSAPICleanupCredentials",
                        "lines": 3
                    },
                    {
                        "name": "GSSAPIKeyExchange",
                        "lines": 3
                    },
                    {
                        "name": "GSSAPIStrictAcceptorCheck",
                        "lines": 7
                    },
                    {
                        "name": "GSSAPIStoreCredentialsOnRekey",
                        "lines": 7
                    },
                    {
                        "name": "GSSAPIKexAlgorithms",
                        "lines": 15
                    },
                    {
                        "name": "HostbasedAcceptedAlgorithms",
                        "lines": 26
                    },
                    {
                        "name": "HostbasedAuthentication",
                        "lines": 4
                    },
                    {
                        "name": "HostbasedUsesNameFromPacketOnly",
                        "lines": 6
                    },
                    {
                        "name": "HostCertificate",
                        "lines": 4
                    },
                    {
                        "name": "HostKey",
                        "lines": 12
                    },
                    {
                        "name": "HostKeyAgent",
                        "lines": 4
                    },
                    {
                        "name": "HostKeyAlgorithms",
                        "lines": 20
                    },
                    {
                        "name": "IgnoreRhosts",
                        "lines": 8
                    },
                    {
                        "name": "IgnoreUserKnownHosts",
                        "lines": 4
                    },
                    {
                        "name": "Include",
                        "lines": 15
                    },
                    {
                        "name": "KbdInteractiveAuthentication",
                        "lines": 4
                    },
                    {
                        "name": "KerberosAuthentication",
                        "lines": 5
                    },
                    {
                        "name": "KerberosGetAFSToken",
                        "lines": 3
                    },
                    {
                        "name": "KerberosOrLocalPasswd",
                        "lines": 3
                    },
                    {
                        "name": "KerberosTicketCleanup",
                        "lines": 3
                    },
                    {
                        "name": "KexAlgorithms",
                        "lines": 35
                    },
                    {
                        "name": "ListenAddress",
                        "lines": 12
                    },
                    {
                        "name": "LoginGraceTime",
                        "lines": 3
                    },
                    {
                        "name": "LogLevel",
                        "lines": 6
                    },
                    {
                        "name": "LogVerbose",
                        "lines": 86
                    },
                    {
                        "name": "MaxAuthTries",
                        "lines": 4
                    },
                    {
                        "name": "MaxSessions",
                        "lines": 6
                    },
                    {
                        "name": "MaxStartups",
                        "lines": 10
                    },
                    {
                        "name": "ModuliFile",
                        "lines": 4
                    },
                    {
                        "name": "PasswordAuthentication",
                        "lines": 2
                    },
                    {
                        "name": "PermitEmptyPasswords",
                        "lines": 3
                    },
                    {
                        "name": "PermitListen",
                        "lines": 17
                    },
                    {
                        "name": "PermitOpen",
                        "lines": 14
                    },
                    {
                        "name": "PermitRootLogin",
                        "lines": 14
                    },
                    {
                        "name": "PermitTTY",
                        "lines": 2
                    },
                    {
                        "name": "PermitTunnel",
                        "lines": 7
                    },
                    {
                        "name": "PermitUserEnvironment",
                        "lines": 7
                    },
                    {
                        "name": "PermitUserRC",
                        "lines": 2
                    },
                    {
                        "name": "PerSourceMaxStartups",
                        "lines": 4
                    },
                    {
                        "name": "PerSourceNetBlockSize",
                        "lines": 5
                    },
                    {
                        "name": "PidFile",
                        "lines": 6
                    },
                    {
                        "name": "PrintLastLog",
                        "lines": 3
                    },
                    {
                        "name": "PrintMotd",
                        "lines": 4
                    },
                    {
                        "name": "PubkeyAcceptedAlgorithms",
                        "lines": 26
                    },
                    {
                        "name": "PubkeyAuthOptions",
                        "lines": 17
                    },
                    {
                        "name": "PubkeyAuthentication",
                        "lines": 2
                    },
                    {
                        "name": "RekeyLimit",
                        "lines": 10
                    },
                    {
                        "name": "RequiredRSASize",
                        "lines": 4
                    },
                    {
                        "name": "RevokedKeys",
                        "lines": 7
                    },
                    {
                        "name": "SecurityKeyProvider",
                        "lines": 9
                    },
                    {
                        "name": "StreamLocalBindMask",
                        "lines": 8
                    },
                    {
                        "name": "StreamLocalBindUnlink",
                        "lines": 8
                    },
                    {
                        "name": "StrictModes",
                        "lines": 6
                    },
                    {
                        "name": "Subsystem",
                        "lines": 12
                    },
                    {
                        "name": "SyslogFacility",
                        "lines": 4
                    },
                    {
                        "name": "TCPKeepAlive",
                        "lines": 15
                    },
                    {
                        "name": "TrustedUserCAKeys",
                        "lines": 9
                    },
                    {
                        "name": "UnusedConnectionTimeout",
                        "lines": 33
                    },
                    {
                        "name": "VersionAddendum",
                        "lines": 3
                    },
                    {
                        "name": "X11DisplayOffset",
                        "lines": 3
                    },
                    {
                        "name": "X11Forwarding",
                        "lines": 16
                    },
                    {
                        "name": "X11UseLocalhost",
                        "lines": 8
                    },
                    {
                        "name": "XAuthLocation",
                        "lines": 3
                    }
                ]
            },
            {
                "name": "TIME FORMATS",
                "lines": 19,
                "subsections": []
            },
            {
                "name": "TOKENS",
                "lines": 28,
                "subsections": []
            },
            {
                "name": "FILES",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "AUTHORS",
                "lines": 7,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "sshdconfig — OpenSSH daemon configuration file\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "sshd(8)  reads configuration data from /etc/ssh/sshdconfig (or the file specified with -f on\nthe command line).  The file contains keyword-argument pairs, one  per  line.   Unless  noted\notherwise,  for each keyword, the first obtained value will be used.  Lines starting with ‘#’\nand empty lines are interpreted as comments.  Arguments may optionally be enclosed in  double\nquotes (\") in order to represent arguments containing spaces.\n\nNote   that   the   Debian  openssh-server  package  sets  several  options  as  standard  in\n/etc/ssh/sshdconfig which are not the default in sshd(8):\n\n•   Include /etc/ssh/sshdconfig.d/*.conf\n•   KbdInteractiveAuthentication no\n•   X11Forwarding yes\n•   PrintMotd no\n•   AcceptEnv LANG LC*\n•   Subsystem sftp /usr/lib/openssh/sftp-server\n•   UsePAM yes\n\n/etc/ssh/sshdconfig.d/*.conf files are included at the start of the configuration  file,  so\noptions set there will override those in /etc/ssh/sshdconfig.\n\nThe possible keywords and their meanings are as follows (note that keywords are case-insensi‐\ntive and arguments are case-sensitive):\n",
                "subsections": [
                    {
                        "name": "AcceptEnv",
                        "content": "Specifies  what environment variables sent by the client will be copied into the ses‐\nsion's environ(7).  See SendEnv and SetEnv in sshconfig(5) for how to configure  the\nclient.   The  TERM  environment  variable is always accepted whenever the client re‐\nquests a pseudo-terminal as it is required by the protocol.  Variables are  specified\nby name, which may contain the wildcard characters ‘*’ and ‘?’.  Multiple environment\nvariables  may  be separated by whitespace or spread across multiple AcceptEnv direc‐\ntives.  Be warned that some environment variables could be used to bypass  restricted\nuser  environments.   For this reason, care should be taken in the use of this direc‐\ntive.  The default is not to accept any environment variables.\n"
                    },
                    {
                        "name": "AddressFamily",
                        "content": "Specifies which address family should be used by sshd(8).  Valid  arguments  are  any\n(the default), inet (use IPv4 only), or inet6 (use IPv6 only).\n"
                    },
                    {
                        "name": "AllowAgentForwarding",
                        "content": "Specifies  whether  ssh-agent(1)  forwarding is permitted.  The default is yes.  Note\nthat disabling agent forwarding does not improve security unless users are  also  de‐\nnied shell access, as they can always install their own forwarders.\n"
                    },
                    {
                        "name": "AllowGroups",
                        "content": "This  keyword  can be followed by a list of group name patterns, separated by spaces.\nIf specified, login is allowed only for users whose primary  group  or  supplementary\ngroup  list  matches  one  of  the patterns.  Only group names are valid; a numerical\ngroup ID is not recognized.  By default, login is allowed for all  groups.   The  al‐\nlow/deny  groups  directives  are  processed  in  the  following  order:  DenyGroups,\nAllowGroups.\n\nSee PATTERNS in sshconfig(5) for more information on patterns.  This keyword may ap‐\npear multiple times in sshdconfig with each instance appending to the list.\n"
                    },
                    {
                        "name": "AllowStreamLocalForwarding",
                        "content": "Specifies whether StreamLocal (Unix-domain  socket)  forwarding  is  permitted.   The\navailable options are yes (the default) or all to allow StreamLocal forwarding, no to\nprevent  all  StreamLocal  forwarding,  local to allow local (from the perspective of\nssh(1)) forwarding only or remote to allow remote forwarding only.   Note  that  dis‐\nabling  StreamLocal forwarding does not improve security unless users are also denied\nshell access, as they can always install their own forwarders.\n"
                    },
                    {
                        "name": "AllowTcpForwarding",
                        "content": "Specifies whether TCP forwarding is permitted.  The available options  are  yes  (the\ndefault)  or  all to allow TCP forwarding, no to prevent all TCP forwarding, local to\nallow local (from the perspective of ssh(1)) forwarding only or remote to  allow  re‐\nmote  forwarding  only.  Note that disabling TCP forwarding does not improve security\nunless users are also denied shell access, as they can always install their own  for‐\nwarders.\n"
                    },
                    {
                        "name": "AllowUsers",
                        "content": "This  keyword  can  be followed by a list of user name patterns, separated by spaces.\nIf specified, login is allowed only for user names that match one  of  the  patterns.\nOnly  user names are valid; a numerical user ID is not recognized.  By default, login\nis allowed for all users.  If the pattern takes the form USER@HOST then USER and HOST\nare separately checked, restricting logins to particular users from particular hosts.\nHOST criteria may additionally contain addresses to  match  in  CIDR  address/masklen\nformat.   The  allow/deny  users  directives  are  processed  in the following order:\nDenyUsers, AllowUsers.\n\nSee PATTERNS in sshconfig(5) for more information on patterns.  This keyword may ap‐\npear multiple times in sshdconfig with each instance appending to the list.\n"
                    },
                    {
                        "name": "AuthenticationMethods",
                        "content": "Specifies the authentication methods that must be successfully completed for  a  user\nto  be  granted  access.  This option must be followed by one or more lists of comma-\nseparated authentication method names, or by the single string any  to  indicate  the\ndefault  behaviour  of accepting any single authentication method.  If the default is\noverridden, then successful authentication requires completion of every method in  at\nleast one of these lists.\n\nFor  example,  \"publickey,password  publickey,keyboard-interactive\" would require the\nuser to complete public key authentication, followed by either password  or  keyboard\ninteractive  authentication.  Only methods that are next in one or more lists are of‐\nfered at each stage, so for this example it would not be possible to attempt password\nor keyboard-interactive authentication before public key.\n\nFor keyboard interactive authentication it is also possible to  restrict  authentica‐\ntion  to  a  specific  device  by appending a colon followed by the device identifier\nbsdauth  or  pam.    depending   on   the   server   configuration.    For   example,\n\"keyboard-interactive:bsdauth\"  would restrict keyboard interactive authentication to\nthe bsdauth device.\n\nIf the publickey method is listed more than once, sshd(8)  verifies  that  keys  that\nhave been used successfully are not reused for subsequent authentications.  For exam‐\nple,  \"publickey,publickey\"  requires  successful  authentication using two different\npublic keys.\n\nNote that each authentication method listed should also be explicitly enabled in  the\nconfiguration.\n\nThe   available   authentication   methods   are:   \"gssapi-with-mic\",   \"hostbased\",\n\"keyboard-interactive\", \"none\"  (used  for  access  to  password-less  accounts  when\nPermitEmptyPasswords is enabled), \"password\" and \"publickey\".\n"
                    },
                    {
                        "name": "AuthorizedKeysCommand",
                        "content": "Specifies  a  program to be used to look up the user's public keys.  The program must\nbe owned by root, not writable by group or others and specified by an absolute  path.\nArguments  to  AuthorizedKeysCommand accept the tokens described in the “TOKENS” sec‐\ntion.  If no arguments are specified then the username of the target user is used.\n\nThe program should produce on standard output zero or more lines  of  authorizedkeys\noutput  (see “AUTHORIZEDKEYS” in sshd(8)).  AuthorizedKeysCommand is tried after the\nusual AuthorizedKeysFile files and will not be executed if a matching  key  is  found\nthere.  By default, no AuthorizedKeysCommand is run.\n"
                    },
                    {
                        "name": "AuthorizedKeysCommandUser",
                        "content": "Specifies  the user under whose account the AuthorizedKeysCommand is run.  It is rec‐\nommended to use a dedicated user that has no other role on the host than running  au‐\nthorized    keys    commands.     If    AuthorizedKeysCommand    is   specified   but\nAuthorizedKeysCommandUser is not, then sshd(8) will refuse to start.\n"
                    },
                    {
                        "name": "AuthorizedKeysFile",
                        "content": "Specifies the file that contains the public keys used for user  authentication.   The\nformat is described in the AUTHORIZEDKEYS FILE FORMAT section of sshd(8).  Arguments\nto AuthorizedKeysFile accept the tokens described in the “TOKENS” section.  After ex‐\npansion,  AuthorizedKeysFile  is  taken to be an absolute path or one relative to the\nuser's home directory.  Multiple files may be listed, separated by  whitespace.   Al‐\nternately  this  option  may  be set to none to skip checking for user keys in files.\nThe default is \".ssh/authorizedkeys .ssh/authorizedkeys2\".\n"
                    },
                    {
                        "name": "AuthorizedPrincipalsCommand",
                        "content": "Specifies a program to be used to generate the list of allowed certificate principals\nas per AuthorizedPrincipalsFile.  The program must be owned by root, not writable  by\ngroup    or   others   and   specified   by   an   absolute   path.    Arguments   to\nAuthorizedPrincipalsCommand accept the tokens described in the “TOKENS” section.   If\nno arguments are specified then the username of the target user is used.\n\nThe   program   should   produce   on   standard   output   zero  or  more  lines  of\nAuthorizedPrincipalsFile   output.    If   either   AuthorizedPrincipalsCommand    or\nAuthorizedPrincipalsFile  is  specified,  then certificates offered by the client for\nauthentication  must  contain  a  principal  that  is   listed.    By   default,   no\nAuthorizedPrincipalsCommand is run.\n"
                    },
                    {
                        "name": "AuthorizedPrincipalsCommandUser",
                        "content": "Specifies the user under whose account the AuthorizedPrincipalsCommand is run.  It is\nrecommended  to  use a dedicated user that has no other role on the host than running\nauthorized principals commands.   If  AuthorizedPrincipalsCommand  is  specified  but\nAuthorizedPrincipalsCommandUser is not, then sshd(8) will refuse to start.\n"
                    },
                    {
                        "name": "AuthorizedPrincipalsFile",
                        "content": "Specifies a file that lists principal names that are accepted for certificate authen‐\ntication.   When using certificates signed by a key listed in TrustedUserCAKeys, this\nfile lists names, one of which must appear in the certificate for it to  be  accepted\nfor  authentication.   Names  are listed one per line preceded by key options (as de‐\nscribed in “AUTHORIZEDKEYS FILE FORMAT”  in  sshd(8)).   Empty  lines  and  comments\nstarting with ‘#’ are ignored.\n\nArguments  to  AuthorizedPrincipalsFile  accept  the tokens described in the “TOKENS”\nsection.  After expansion, AuthorizedPrincipalsFile is taken to be an  absolute  path\nor one relative to the user's home directory.  The default is none, i.e. not to use a\nprincipals  file  –  in this case, the username of the user must appear in a certifi‐\ncate's principals list for it to be accepted.\n\nNote that AuthorizedPrincipalsFile is only used when authentication proceeds using  a\nCA  listed  in  TrustedUserCAKeys  and is not consulted for certification authorities\ntrusted via ~/.ssh/authorizedkeys, though the principals= key option offers a  simi‐\nlar facility (see sshd(8) for details).\n\nBanner  The  contents of the specified file are sent to the remote user before authentication\nis allowed.  If the argument is none then no banner is  displayed.   By  default,  no\nbanner is displayed.\n"
                    },
                    {
                        "name": "CASignatureAlgorithms",
                        "content": "Specifies which algorithms are allowed for signing of certificates by certificate au‐\nthorities (CAs).  The default is:\n\nssh-ed25519,ecdsa-sha2-nistp256,\necdsa-sha2-nistp384,ecdsa-sha2-nistp521,\nsk-ssh-ed25519@openssh.com,\nsk-ecdsa-sha2-nistp256@openssh.com,\nrsa-sha2-512,rsa-sha2-256\n\nIf the specified list begins with a ‘+’ character, then the specified algorithms will\nbe  appended to the default set instead of replacing them.  If the specified list be‐\ngins with a ‘-’ character, then the specified algorithms (including  wildcards)  will\nbe removed from the default set instead of replacing them.\n\nCertificates  signed  using  other  algorithms will not be accepted for public key or\nhost-based authentication.\n"
                    },
                    {
                        "name": "ChannelTimeout",
                        "content": "Specifies whether and how quickly sshd(8) should close inactive  channels.   Timeouts\nare specified as one or more “type=interval” pairs separated by whitespace, where the\n“type” must be a channel type name (as described in the table below), optionally con‐\ntaining wildcard characters.\n\nThe timeout value “interval” is specified in seconds or may use any of the units doc‐\numented  in  the “TIME FORMATS” section.  For example, “session:*=5m” would cause all\nsessions to terminate after five minutes of inactivity.  Specifying a zero value dis‐\nables the inactivity timeout.\n\nThe available channel types include:\n\nagent-connection\nOpen connections to ssh-agent(1).\n\ndirect-tcpip, direct-streamlocal@openssh.com\nOpen TCP or Unix socket (respectively) connections that have been established\nfrom a ssh(1) local forwarding, i.e. LocalForward or DynamicForward.\n\nforwarded-tcpip, forwarded-streamlocal@openssh.com\nOpen TCP or Unix socket (respectively) connections that have been established\nto a sshd(8)  listening  on  behalf  of  a  ssh(1)  remote  forwarding,  i.e.\nRemoteForward.\n\nsession:command\nCommand execution sessions.\n\nsession:shell\nInteractive shell sessions.\n\nsession:subsystem:...\nSubsystem   sessions,   e.g.  for  sftp(1),  which  could  be  identified  as\nsession:subsystem:sftp.\n\nx11-connection\nOpen X11 forwarding sessions.\n\nNote that in all the above cases, terminating an inactive session does not  guarantee\nto  remove  all  resources  associated  with the session, e.g. shell processes or X11\nclients relating to the session may continue to execute.\n\nMoreover, terminating an inactive channel or session does not necessarily  close  the\nSSH  connection,  nor does it prevent a client from requesting another channel of the\nsame type.  In particular, expiring an inactive forwarding session does  not  prevent\nanother   identical   forwarding   from   being   subsequently   created.   See  also\nUnusedConnectionTimeout, which may be used in conjunction with this option.\n\nThe default is not to expire channels of any type for inactivity.\n"
                    },
                    {
                        "name": "ChrootDirectory",
                        "content": "Specifies the pathname of a directory to chroot(2) to after authentication.  At  ses‐\nsion startup sshd(8) checks that all components of the pathname are root-owned direc‐\ntories  which are not writable by any other user or group.  After the chroot, sshd(8)\nchanges  the  working  directory  to  the  user's  home  directory.    Arguments   to\nChrootDirectory accept the tokens described in the “TOKENS” section.\n\nThe  ChrootDirectory  must contain the necessary files and directories to support the\nuser's session.  For an interactive session this requires at least a shell, typically\nsh(1), and basic /dev nodes such as null(4), zero(4), stdin(4), stdout(4), stderr(4),\nand tty(4) devices.  For file transfer sessions using SFTP no  additional  configura‐\ntion  of  the  environment is necessary if the in-process sftp-server is used, though\nsessions which use logging may require /dev/log inside the chroot directory  on  some\noperating systems (see sftp-server(8) for details).\n\nFor safety, it is very important that the directory hierarchy be prevented from modi‐\nfication  by other processes on the system (especially those outside the jail).  Mis‐\nconfiguration can lead to unsafe environments which sshd(8) cannot detect.\n\nThe default is none, indicating not to chroot(2).\n"
                    },
                    {
                        "name": "Ciphers",
                        "content": "Specifies the ciphers allowed.  Multiple ciphers must  be  comma-separated.   If  the\nspecified  list  begins  with a ‘+’ character, then the specified ciphers will be ap‐\npended to the default set instead of replacing them.  If the  specified  list  begins\nwith  a  ‘-’  character, then the specified ciphers (including wildcards) will be re‐\nmoved from the default set instead of replacing them.  If the specified  list  begins\nwith  a  ‘^’  character, then the specified ciphers will be placed at the head of the\ndefault set.\n\nThe supported ciphers are:\n\n3des-cbc\naes128-cbc\naes192-cbc\naes256-cbc\naes128-ctr\naes192-ctr\naes256-ctr\naes128-gcm@openssh.com\naes256-gcm@openssh.com\nchacha20-poly1305@openssh.com\n\nThe default is:\n\nchacha20-poly1305@openssh.com,\naes128-ctr,aes192-ctr,aes256-ctr,\naes128-gcm@openssh.com,aes256-gcm@openssh.com\n\nThe list of available ciphers may also be obtained using \"ssh -Q cipher\".\n"
                    },
                    {
                        "name": "ClientAliveCountMax",
                        "content": "Sets the number of client alive messages which may be sent without sshd(8)  receiving\nany  messages  back from the client.  If this threshold is reached while client alive\nmessages are being sent, sshd will disconnect the client,  terminating  the  session.\nIt  is important to note that the use of client alive messages is very different from\nTCPKeepAlive.  The client alive messages are sent through the encrypted  channel  and\ntherefore will not be spoofable.  The TCP keepalive option enabled by TCPKeepAlive is\nspoofable.   The  client alive mechanism is valuable when the client or server depend\non knowing when a connection has become unresponsive.\n\nThe default value is 3.  If ClientAliveInterval is set to 15, and ClientAliveCountMax\nis left at the default, unresponsive SSH clients will be disconnected after  approxi‐\nmately  45  seconds.  Setting a zero ClientAliveCountMax disables connection termina‐\ntion.\n"
                    },
                    {
                        "name": "ClientAliveInterval",
                        "content": "Sets a timeout interval in seconds after which if no data has been received from  the\nclient,  sshd(8)  will  send a message through the encrypted channel to request a re‐\nsponse from the client.  The default is 0, indicating that these messages will not be\nsent to the client.\n"
                    },
                    {
                        "name": "Compression",
                        "content": "Specifies whether compression is enabled after the user  has  authenticated  success‐\nfully.   The argument must be yes, delayed (a legacy synonym for yes) or no.  The de‐\nfault is yes.\n"
                    },
                    {
                        "name": "DebianBanner",
                        "content": "Specifies whether the distribution-specified extra version suffix is included  during\ninitial protocol handshake.  The default is yes.\n"
                    },
                    {
                        "name": "DenyGroups",
                        "content": "This  keyword  can be followed by a list of group name patterns, separated by spaces.\nLogin is disallowed for users whose primary group or supplementary group list matches\none of the patterns.  Only group names are valid; a numerical group ID is not  recog‐\nnized.   By  default,  login is allowed for all groups.  The allow/deny groups direc‐\ntives are processed in the following order: DenyGroups, AllowGroups.\n\nSee PATTERNS in sshconfig(5) for more information on patterns.  This keyword may ap‐\npear multiple times in sshdconfig with each instance appending to the list.\n"
                    },
                    {
                        "name": "DenyUsers",
                        "content": "This keyword can be followed by a list of user name patterns,  separated  by  spaces.\nLogin  is  disallowed for user names that match one of the patterns.  Only user names\nare valid; a numerical user ID is not recognized.  By default, login is  allowed  for\nall users.  If the pattern takes the form USER@HOST then USER and HOST are separately\nchecked, restricting logins to particular users from particular hosts.  HOST criteria\nmay  additionally contain addresses to match in CIDR address/masklen format.  The al‐\nlow/deny  users  directives  are  processed  in  the  following   order:   DenyUsers,\nAllowUsers.\n\nSee PATTERNS in sshconfig(5) for more information on patterns.  This keyword may ap‐\npear multiple times in sshdconfig with each instance appending to the list.\n"
                    },
                    {
                        "name": "DisableForwarding",
                        "content": "Disables  all  forwarding features, including X11, ssh-agent(1), TCP and StreamLocal.\nThis option overrides all other  forwarding-related  options  and  may  simplify  re‐\nstricted configurations.\n"
                    },
                    {
                        "name": "ExposeAuthInfo",
                        "content": "Writes  a  temporary file containing a list of authentication methods and public cre‐\ndentials (e.g. keys) used to authenticate the user.  The location of the file is  ex‐\nposed  to  the  user session through the SSHUSERAUTH environment variable.  The de‐\nfault is no.\n"
                    },
                    {
                        "name": "FingerprintHash",
                        "content": "Specifies the hash algorithm used when logging key fingerprints.  Valid options  are:\nmd5 and sha256.  The default is sha256.\n"
                    },
                    {
                        "name": "ForceCommand",
                        "content": "Forces  the  execution of the command specified by ForceCommand, ignoring any command\nsupplied by the client and ~/.ssh/rc if present.  The command is invoked by using the\nuser's login shell with the -c option.  This applies to shell, command, or  subsystem\nexecution.   It is most useful inside a Match block.  The command originally supplied\nby the client is available in the SSHORIGINALCOMMAND environment variable.   Speci‐\nfying a command of internal-sftp will force the use of an in-process SFTP server that\nrequires no support files when used with ChrootDirectory.  The default is none.\n"
                    },
                    {
                        "name": "GatewayPorts",
                        "content": "Specifies  whether  remote  hosts  are  allowed to connect to ports forwarded for the\nclient.  By default, sshd(8) binds remote port forwardings to the  loopback  address.\nThis  prevents  other  remote hosts from connecting to forwarded ports.  GatewayPorts\ncan be used to specify that sshd should allow remote port forwardings to bind to non-\nloopback addresses, thus allowing other hosts to connect.  The argument may be no  to\nforce  remote  port  forwardings to be available to the local host only, yes to force\nremote port forwardings to bind to the wildcard address, or clientspecified to  allow\nthe  client  to  select the address to which the forwarding is bound.  The default is\nno.\n"
                    },
                    {
                        "name": "GSSAPIAuthentication",
                        "content": "Specifies whether user authentication based on GSSAPI is allowed.  The default is no.\n"
                    },
                    {
                        "name": "GSSAPICleanupCredentials",
                        "content": "Specifies whether to automatically destroy the user's credentials  cache  on  logout.\nThe default is yes.\n"
                    },
                    {
                        "name": "GSSAPIKeyExchange",
                        "content": "Specifies  whether  key  exchange  based  on  GSSAPI  is allowed. GSSAPI key exchange\ndoesn't rely on ssh keys to verify host identity.  The default is no.\n"
                    },
                    {
                        "name": "GSSAPIStrictAcceptorCheck",
                        "content": "Determines whether to be strict about the identity of the GSSAPI  acceptor  a  client\nauthenticates  against.   If set to yes then the client must authenticate against the\nhost service on the current hostname.  If set to no then the client may  authenticate\nagainst any service key stored in the machine's default store.  This facility is pro‐\nvided  to  assist  with operation on multi homed machines.  The default is yes.  This\noption may not be effective in Windows Active Directory environments.\n"
                    },
                    {
                        "name": "GSSAPIStoreCredentialsOnRekey",
                        "content": "Controls whether the user's GSSAPI credentials should be updated following a success‐\nful connection rekeying. This option can be used to accepted renewed or updated  cre‐\ndentials from a compatible client. The default is “no”.\n\nFor this to work GSSAPIKeyExchange needs to be enabled in the server and also used by\nthe client.\n"
                    },
                    {
                        "name": "GSSAPIKexAlgorithms",
                        "content": "The  list of key exchange algorithms that are accepted by GSSAPI key exchange. Possi‐\nble values are\n\ngss-gex-sha1-,\ngss-group1-sha1-,\ngss-group14-sha1-,\ngss-group14-sha256-,\ngss-group16-sha512-,\ngss-nistp256-sha256-,\ngss-curve25519-sha256-\n\nThe                                    default                                     is\n“gss-group14-sha256-,gss-group16-sha512-,gss-nistp256-sha256-,gss-curve25519-sha256-,gss-gex-sha1-,gss-group14-sha1-”.\nThis option only applies to connections using GSSAPI.\n"
                    },
                    {
                        "name": "HostbasedAcceptedAlgorithms",
                        "content": "Specifies the signature algorithms that will be accepted for hostbased authentication\nas a list of comma-separated patterns.  Alternately if the specified list begins with\na  ‘+’ character, then the specified signature algorithms will be appended to the de‐\nfault set instead of replacing them.  If the specified list begins with a ‘-’ charac‐\nter, then the specified signature algorithms (including wildcards)  will  be  removed\nfrom  the default set instead of replacing them.  If the specified list begins with a\n‘^’ character, then the specified signature algorithms will be placed at the head  of\nthe default set.  The default for this option is:\n\nssh-ed25519-cert-v01@openssh.com,\necdsa-sha2-nistp256-cert-v01@openssh.com,\necdsa-sha2-nistp384-cert-v01@openssh.com,\necdsa-sha2-nistp521-cert-v01@openssh.com,\nsk-ssh-ed25519-cert-v01@openssh.com,\nsk-ecdsa-sha2-nistp256-cert-v01@openssh.com,\nrsa-sha2-512-cert-v01@openssh.com,\nrsa-sha2-256-cert-v01@openssh.com,\nssh-ed25519,\necdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,\nsk-ssh-ed25519@openssh.com,\nsk-ecdsa-sha2-nistp256@openssh.com,\nrsa-sha2-512,rsa-sha2-256\n\nThe  list  of  available  signature  algorithms  may  also  be obtained using \"ssh -Q\nHostbasedAcceptedAlgorithms\".  This was formerly named HostbasedAcceptedKeyTypes.\n"
                    },
                    {
                        "name": "HostbasedAuthentication",
                        "content": "Specifies whether rhosts or /etc/hosts.equiv authentication together with  successful\npublic  key  client  host authentication is allowed (host-based authentication).  The\ndefault is no.\n"
                    },
                    {
                        "name": "HostbasedUsesNameFromPacketOnly",
                        "content": "Specifies whether or not the server will attempt to perform  a  reverse  name  lookup\nwhen matching the name in the ~/.shosts, ~/.rhosts, and /etc/hosts.equiv files during\nHostbasedAuthentication.   A setting of yes means that sshd(8) uses the name supplied\nby the client rather than attempting to resolve the name from the TCP connection  it‐\nself.  The default is no.\n"
                    },
                    {
                        "name": "HostCertificate",
                        "content": "Specifies  a file containing a public host certificate.  The certificate's public key\nmust match a private host key already specified by HostKey.  The default behaviour of\nsshd(8) is not to load any certificates.\n"
                    },
                    {
                        "name": "HostKey",
                        "content": "Specifies a file containing a private  host  key  used  by  SSH.   The  defaults  are\n/etc/ssh/sshhostecdsakey,             /etc/ssh/sshhosted25519key            and\n/etc/ssh/sshhostrsakey.\n\nNote that sshd(8) will refuse to use a file if it is group/world-accessible and  that\nthe  HostKeyAlgorithms  option  restricts  which  of  the  keys  are actually used by\nsshd(8).\n\nIt is possible to have multiple host key files.  It is also possible to specify  pub‐\nlic host key files instead.  In this case operations on the private key will be dele‐\ngated to an ssh-agent(1).\n"
                    },
                    {
                        "name": "HostKeyAgent",
                        "content": "Identifies  the  UNIX-domain socket used to communicate with an agent that has access\nto the private host keys.  If the string \"SSHAUTHSOCK\" is specified,  the  location\nof the socket will be read from the SSHAUTHSOCK environment variable.\n"
                    },
                    {
                        "name": "HostKeyAlgorithms",
                        "content": "Specifies  the host key signature algorithms that the server offers.  The default for\nthis option is:\n\nssh-ed25519-cert-v01@openssh.com,\necdsa-sha2-nistp256-cert-v01@openssh.com,\necdsa-sha2-nistp384-cert-v01@openssh.com,\necdsa-sha2-nistp521-cert-v01@openssh.com,\nsk-ssh-ed25519-cert-v01@openssh.com,\nsk-ecdsa-sha2-nistp256-cert-v01@openssh.com,\nrsa-sha2-512-cert-v01@openssh.com,\nrsa-sha2-256-cert-v01@openssh.com,\nssh-ed25519,\necdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,\nsk-ssh-ed25519@openssh.com,\nsk-ecdsa-sha2-nistp256@openssh.com,\nrsa-sha2-512,rsa-sha2-256\n\nThe list of available signature  algorithms  may  also  be  obtained  using  \"ssh  -Q\nHostKeyAlgorithms\".\n"
                    },
                    {
                        "name": "IgnoreRhosts",
                        "content": "Specifies   whether   to   ignore   per-user   .rhosts   and   .shosts  files  during\nHostbasedAuthentication.  The system-wide /etc/hosts.equiv and  /etc/ssh/shosts.equiv\nare still used regardless of this setting.\n\nAccepted  values  are  yes (the default) to ignore all per-user files, shosts-only to\nallow the use of .shosts but to ignore .rhosts  or  no  to  allow  both  .shosts  and\nrhosts.\n"
                    },
                    {
                        "name": "IgnoreUserKnownHosts",
                        "content": "Specifies   whether  sshd(8)  should  ignore  the  user's  ~/.ssh/knownhosts  during\nHostbasedAuthentication   and   use   only   the   system-wide   known   hosts   file\n/etc/ssh/sshknownhosts.  The default is “no”.\n"
                    },
                    {
                        "name": "Include",
                        "content": "Include the specified configuration file(s).  Multiple pathnames may be specified and\neach  pathname  may  contain glob(7) wildcards that will be expanded and processed in\nlexical order.  Files without absolute paths are  assumed  to  be  in  /etc/ssh.   An\nInclude directive may appear inside a Match block to perform conditional inclusion.\n\nIPQoS   Specifies the IPv4 type-of-service or DSCP class for the connection.  Accepted values\nare af11, af12, af13, af21, af22, af23, af31, af32, af33, af41, af42, af43, cs0, cs1,\ncs2,  cs3,  cs4,  cs5, cs6, cs7, ef, le, lowdelay, throughput, reliability, a numeric\nvalue, or none to use the operating system default.  This option may take one or  two\narguments,  separated by whitespace.  If one argument is specified, it is used as the\npacket class unconditionally.  If two values are specified, the  first  is  automati‐\ncally  selected for interactive sessions and the second for non-interactive sessions.\nThe default is lowdelay for interactive sessions and throughput  for  non-interactive\nsessions.\n"
                    },
                    {
                        "name": "KbdInteractiveAuthentication",
                        "content": "Specifies  whether to allow keyboard-interactive authentication.  The default is yes.\nThe argument to this keyword must be yes or no.  ChallengeResponseAuthentication is a\ndeprecated alias for this.\n"
                    },
                    {
                        "name": "KerberosAuthentication",
                        "content": "Specifies whether the password provided by the user for  PasswordAuthentication  will\nbe  validated  through the Kerberos KDC.  To use this option, the server needs a Ker‐\nberos servtab which allows the verification of the KDC's identity.   The  default  is\nno.\n"
                    },
                    {
                        "name": "KerberosGetAFSToken",
                        "content": "If  AFS  is active and the user has a Kerberos 5 TGT, attempt to acquire an AFS token\nbefore accessing the user's home directory.  The default is no.\n"
                    },
                    {
                        "name": "KerberosOrLocalPasswd",
                        "content": "If password authentication through Kerberos fails then the password will be validated\nvia any additional local mechanism such as /etc/passwd.  The default is yes.\n"
                    },
                    {
                        "name": "KerberosTicketCleanup",
                        "content": "Specifies whether to automatically destroy the user's ticket cache  file  on  logout.\nThe default is yes.\n"
                    },
                    {
                        "name": "KexAlgorithms",
                        "content": "Specifies  the  available KEX (Key Exchange) algorithms.  Multiple algorithms must be\ncomma-separated.  Alternately if the specified list begins with a ‘+’ character, then\nthe specified algorithms will be appended to the default  set  instead  of  replacing\nthem.   If  the  specified list begins with a ‘-’ character, then the specified algo‐\nrithms (including wildcards) will be removed from the default set instead of  replac‐\ning  them.  If the specified list begins with a ‘^’ character, then the specified al‐\ngorithms will be placed at the head of the default  set.   The  supported  algorithms\nare:\n\ncurve25519-sha256\ncurve25519-sha256@libssh.org\ndiffie-hellman-group1-sha1\ndiffie-hellman-group14-sha1\ndiffie-hellman-group14-sha256\ndiffie-hellman-group16-sha512\ndiffie-hellman-group18-sha512\ndiffie-hellman-group-exchange-sha1\ndiffie-hellman-group-exchange-sha256\necdh-sha2-nistp256\necdh-sha2-nistp384\necdh-sha2-nistp521\nsntrup761x25519-sha512@openssh.com\n\nThe default is:\n\nsntrup761x25519-sha512@openssh.com,\ncurve25519-sha256,curve25519-sha256@libssh.org,\necdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,\ndiffie-hellman-group-exchange-sha256,\ndiffie-hellman-group16-sha512,diffie-hellman-group18-sha512,\ndiffie-hellman-group14-sha256\n\nThe  list  of  available  key  exchange algorithms may also be obtained using \"ssh -Q\nKexAlgorithms\".\n"
                    },
                    {
                        "name": "ListenAddress",
                        "content": "Specifies the local addresses sshd(8) should listen on.  The following forms  may  be\nused:\n\nListenAddress hostname|address\nListenAddress hostname:port\nListenAddress IPv4address:port\nListenAddress [hostname|address]:port\n\nIf port is not specified, sshd will listen on the address and all Port options speci‐\nfied.   The  default is to listen on all local addresses.  Multiple ListenAddress op‐\ntions are permitted.\n"
                    },
                    {
                        "name": "LoginGraceTime",
                        "content": "The server disconnects after this time if the user has not  successfully  logged  in.\nIf the value is 0, there is no time limit.  The default is 120 seconds.\n"
                    },
                    {
                        "name": "LogLevel",
                        "content": "Gives  the verbosity level that is used when logging messages from sshd(8).  The pos‐\nsible values are: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and  DE‐\nBUG3.  The default is INFO.  DEBUG and DEBUG1 are equivalent.  DEBUG2 and DEBUG3 each\nspecify  higher  levels of debugging output.  Logging with a DEBUG level violates the\nprivacy of users and is not recommended.\n"
                    },
                    {
                        "name": "LogVerbose",
                        "content": "Specify one or more overrides to LogLevel.  An override consists of a  pattern  lists\nthat matches the source file, function and line number to force detailed logging for.\nFor example, an override pattern of:\n\nkex.c:*:1000,*:kexexchangeidentification():*,packet.c:*\n\nwould   enable   detailed   logging  for  line  1000  of  kex.c,  everything  in  the\nkexexchangeidentification() function, and all code in the packet.c file.  This  op‐\ntion is intended for debugging and no overrides are enabled by default.\n\nMACs    Specifies  the available MAC (message authentication code) algorithms.  The MAC algo‐\nrithm is used for data integrity protection.  Multiple algorithms must be comma-sepa‐\nrated.  If the specified list begins with a ‘+’ character, then the  specified  algo‐\nrithms  will be appended to the default set instead of replacing them.  If the speci‐\nfied list begins with a ‘-’ character, then the specified algorithms (including wild‐\ncards) will be removed from the default set instead of replacing them.  If the speci‐\nfied list begins with a ‘^’ character, then the specified algorithms will  be  placed\nat the head of the default set.\n\nThe  algorithms that contain \"-etm\" calculate the MAC after encryption (encrypt-then-\nmac).  These are considered safer and their use recommended.  The supported MACs are:\n\nhmac-md5\nhmac-md5-96\nhmac-sha1\nhmac-sha1-96\nhmac-sha2-256\nhmac-sha2-512\numac-64@openssh.com\numac-128@openssh.com\nhmac-md5-etm@openssh.com\nhmac-md5-96-etm@openssh.com\nhmac-sha1-etm@openssh.com\nhmac-sha1-96-etm@openssh.com\nhmac-sha2-256-etm@openssh.com\nhmac-sha2-512-etm@openssh.com\numac-64-etm@openssh.com\numac-128-etm@openssh.com\n\nThe default is:\n\numac-64-etm@openssh.com,umac-128-etm@openssh.com,\nhmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,\nhmac-sha1-etm@openssh.com,\numac-64@openssh.com,umac-128@openssh.com,\nhmac-sha2-256,hmac-sha2-512,hmac-sha1\n\nThe list of available MAC algorithms may also be obtained using \"ssh -Q mac\".\n\nMatch   Introduces a conditional block.  If all of the criteria on the Match line are  satis‐\nfied, the keywords on the following lines override those set in the global section of\nthe  config  file, until either another Match line or the end of the file.  If a key‐\nword appears in multiple Match blocks that are satisfied, only the first instance  of\nthe keyword is applied.\n\nThe arguments to Match are one or more criteria-pattern pairs or the single token All\nwhich   matches  all  criteria.   The  available  criteria  are  User,  Group,  Host,\nLocalAddress, LocalPort, and Address.\n\nThe match patterns may consist of single entries or comma-separated lists and may use\nthe  wildcard  and  negation  operators  described  in  the  “PATTERNS”  section   of\nsshconfig(5).\n\nThe  patterns  in  an Address criteria may additionally contain addresses to match in\nCIDR address/masklen format, such as 192.0.2.0/24 or 2001:db8::/32.   Note  that  the\nmask  length provided must be consistent with the address - it is an error to specify\na mask length that is too long for the address or one with bits set in this host por‐\ntion of the address.  For example, 192.0.2.0/33 and 192.0.2.0/8, respectively.\n\nOnly a subset of keywords may be used on the lines following a Match keyword.  Avail‐\nable     keywords     are     AcceptEnv,      AllowAgentForwarding,      AllowGroups,\nAllowStreamLocalForwarding,  AllowTcpForwarding,  AllowUsers,  AuthenticationMethods,\nAuthorizedKeysCommand,         AuthorizedKeysCommandUser,         AuthorizedKeysFile,\nAuthorizedPrincipalsCommand,                         AuthorizedPrincipalsCommandUser,\nAuthorizedPrincipalsFile,     Banner,     CASignatureAlgorithms,      ChannelTimeout,\nChrootDirectory,  ClientAliveCountMax,  ClientAliveInterval,  DenyGroups,  DenyUsers,\nDisableForwarding, ExposeAuthInfo, ForceCommand, GatewayPorts,  GSSAPIAuthentication,\nHostbasedAcceptedAlgorithms,                                 HostbasedAuthentication,\nHostbasedUsesNameFromPacketOnly,        IgnoreRhosts,         Include,         IPQoS,\nKbdInteractiveAuthentication,    KerberosAuthentication,    LogLevel,   MaxAuthTries,\nMaxSessions, PasswordAuthentication, PermitEmptyPasswords, PermitListen,  PermitOpen,\nPermitRootLogin,  PermitTTY,  PermitTunnel,  PermitUserRC,  PubkeyAcceptedAlgorithms,\nPubkeyAuthentication,    PubkeyAuthOptions,    RekeyLimit,    RevokedKeys,    SetEnv,\nStreamLocalBindMask,             StreamLocalBindUnlink,            TrustedUserCAKeys,\nUnusedConnectionTimeout, X11DisplayOffset, X11Forwarding and X11UseLocalhost.\n"
                    },
                    {
                        "name": "MaxAuthTries",
                        "content": "Specifies the maximum number of authentication  attempts  permitted  per  connection.\nOnce  the number of failures reaches half this value, additional failures are logged.\nThe default is 6.\n"
                    },
                    {
                        "name": "MaxSessions",
                        "content": "Specifies the maximum number of open shell, login or subsystem (e.g.  sftp)  sessions\npermitted  per  network  connection.  Multiple sessions may be established by clients\nthat support connection multiplexing.  Setting MaxSessions to 1 will effectively dis‐\nable session multiplexing, whereas setting it to 0 will prevent all shell, login  and\nsubsystem sessions while still permitting forwarding.  The default is 10.\n"
                    },
                    {
                        "name": "MaxStartups",
                        "content": "Specifies  the  maximum  number  of concurrent unauthenticated connections to the SSH\ndaemon.  Additional connections will be dropped until authentication succeeds or  the\nLoginGraceTime expires for a connection.  The default is 10:30:100.\n\nAlternatively,  random  early drop can be enabled by specifying the three colon sepa‐\nrated values start:rate:full (e.g. \"10:30:60\").  sshd(8) will refuse  connection  at‐\ntempts  with  a probability of rate/100 (30%) if there are currently start (10) unau‐\nthenticated connections.  The probability increases linearly and all  connection  at‐\ntempts are refused if the number of unauthenticated connections reaches full (60).\n"
                    },
                    {
                        "name": "ModuliFile",
                        "content": "Specifies  the  moduli(5)  file  that contains the Diffie-Hellman groups used for the\n“diffie-hellman-group-exchange-sha1” and  “diffie-hellman-group-exchange-sha256”  key\nexchange methods.  The default is /etc/ssh/moduli.\n"
                    },
                    {
                        "name": "PasswordAuthentication",
                        "content": "Specifies whether password authentication is allowed.  The default is yes.\n"
                    },
                    {
                        "name": "PermitEmptyPasswords",
                        "content": "When password authentication is allowed, it specifies whether the server allows login\nto accounts with empty password strings.  The default is no.\n"
                    },
                    {
                        "name": "PermitListen",
                        "content": "Specifies  the addresses/ports on which a remote TCP port forwarding may listen.  The\nlisten specification must be one of the following forms:\n\nPermitListen port\nPermitListen host:port\n\nMultiple permissions may be specified by separating them with whitespace.   An  argu‐\nment  of  any  can be used to remove all restrictions and permit any listen requests.\nAn argument of none can be used to prohibit all listen requests.  The host  name  may\ncontain  wildcards  as described in the PATTERNS section in sshconfig(5).  The wild‐\ncard ‘*’ can also be used in place of a port number to allow all ports.   By  default\nall port forwarding listen requests are permitted.  Note that the GatewayPorts option\nmay  further restrict which addresses may be listened on.  Note also that ssh(1) will\nrequest a listen host of “localhost” if no listen host  was  specifically  requested,\nand  this  name is treated differently to explicit localhost addresses of “127.0.0.1”\nand “::1”.\n"
                    },
                    {
                        "name": "PermitOpen",
                        "content": "Specifies the destinations to which TCP port forwarding is permitted.  The forwarding\nspecification must be one of the following forms:\n\nPermitOpen host:port\nPermitOpen IPv4addr:port\nPermitOpen [IPv6addr]:port\n\nMultiple forwards may be specified by separating them with whitespace.   An  argument\nof any can be used to remove all restrictions and permit any forwarding requests.  An\nargument  of  none can be used to prohibit all forwarding requests.  The wildcard ‘*’\ncan be used for host or port to allow all hosts or ports respectively.  Otherwise, no\npattern matching or address lookups are performed on supplied names.  By default  all\nport forwarding requests are permitted.\n"
                    },
                    {
                        "name": "PermitRootLogin",
                        "content": "Specifies  whether  root  can  log  in  using  ssh(1).   The  argument  must  be yes,\nprohibit-password, forced-commands-only, or no.  The default is prohibit-password.\n\nIf  this  option  is   set   to   prohibit-password   (or   its   deprecated   alias,\nwithout-password),  password and keyboard-interactive authentication are disabled for\nroot.\n\nIf this option is set to forced-commands-only, root login with public key authentica‐\ntion will be allowed, but only if the command option has been specified (which may be\nuseful for taking remote backups even if root login is normally  not  allowed).   All\nother authentication methods are disabled for root.\n\nIf this option is set to no, root is not allowed to log in.\n"
                    },
                    {
                        "name": "PermitTTY",
                        "content": "Specifies whether pty(4) allocation is permitted.  The default is yes.\n"
                    },
                    {
                        "name": "PermitTunnel",
                        "content": "Specifies  whether  tun(4)  device  forwarding is allowed.  The argument must be yes,\npoint-to-point (layer 3), ethernet (layer 2), or no.   Specifying  yes  permits  both\npoint-to-point and ethernet.  The default is no.\n\nIndependent of this setting, the permissions of the selected tun(4) device must allow\naccess to the user.\n"
                    },
                    {
                        "name": "PermitUserEnvironment",
                        "content": "Specifies     whether     ~/.ssh/environment     and    environment=    options    in\n~/.ssh/authorizedkeys are processed by sshd(8).  Valid options are yes, no or a pat‐\ntern-list  specifying  which  environment  variable  names  to  accept  (for  example\n\"LANG,LC*\").   The  default is no.  Enabling environment processing may enable users\nto bypass access  restrictions  in  some  configurations  using  mechanisms  such  as\nLDPRELOAD.\n"
                    },
                    {
                        "name": "PermitUserRC",
                        "content": "Specifies whether any ~/.ssh/rc file is executed.  The default is yes.\n"
                    },
                    {
                        "name": "PerSourceMaxStartups",
                        "content": "Specifies  the  number of unauthenticated connections allowed from a given source ad‐\ndress, or “none” if there is  no  limit.   This  limit  is  applied  in  addition  to\nMaxStartups, whichever is lower.  The default is none.\n"
                    },
                    {
                        "name": "PerSourceNetBlockSize",
                        "content": "Specifies the number of bits of source address that are grouped together for the pur‐\nposes  of  applying PerSourceMaxStartups limits.  Values for IPv4 and optionally IPv6\nmay be specified, separated by a colon.  The default is 32:128, which means each  ad‐\ndress is considered individually.\n"
                    },
                    {
                        "name": "PidFile",
                        "content": "Specifies  the  file  that  contains the process ID of the SSH daemon, or none to not\nwrite one.  The default is /run/sshd.pid.\n\nPort    Specifies the port number that sshd(8) listens on.  The default is 22.  Multiple  op‐\ntions of this type are permitted.  See also ListenAddress.\n"
                    },
                    {
                        "name": "PrintLastLog",
                        "content": "Specifies  whether sshd(8) should print the date and time of the last user login when\na user logs in interactively.  The default is yes.\n"
                    },
                    {
                        "name": "PrintMotd",
                        "content": "Specifies whether sshd(8) should print /etc/motd when a user logs  in  interactively.\n(On  some systems it is also printed by the shell, /etc/profile, or equivalent.)  The\ndefault is yes.\n"
                    },
                    {
                        "name": "PubkeyAcceptedAlgorithms",
                        "content": "Specifies the signature algorithms that will be accepted for public  key  authentica‐\ntion as a list of comma-separated patterns.  Alternately if the specified list begins\nwith  a  ‘+’ character, then the specified algorithms will be appended to the default\nset instead of replacing them.  If the specified list begins with  a  ‘-’  character,\nthen  the specified algorithms (including wildcards) will be removed from the default\nset instead of replacing them.  If the specified list begins with  a  ‘^’  character,\nthen the specified algorithms will be placed at the head of the default set.  The de‐\nfault for this option is:\n\nssh-ed25519-cert-v01@openssh.com,\necdsa-sha2-nistp256-cert-v01@openssh.com,\necdsa-sha2-nistp384-cert-v01@openssh.com,\necdsa-sha2-nistp521-cert-v01@openssh.com,\nsk-ssh-ed25519-cert-v01@openssh.com,\nsk-ecdsa-sha2-nistp256-cert-v01@openssh.com,\nrsa-sha2-512-cert-v01@openssh.com,\nrsa-sha2-256-cert-v01@openssh.com,\nssh-ed25519,\necdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,\nsk-ssh-ed25519@openssh.com,\nsk-ecdsa-sha2-nistp256@openssh.com,\nrsa-sha2-512,rsa-sha2-256\n\nThe  list  of  available  signature  algorithms  may  also  be obtained using \"ssh -Q\nPubkeyAcceptedAlgorithms\".\n"
                    },
                    {
                        "name": "PubkeyAuthOptions",
                        "content": "Sets one or more public key authentication options.  The supported keywords are: none\n(the default; indicating no  additional  options  are  enabled),  touch-required  and\nverify-required.\n\nThe touch-required option causes public key authentication using a FIDO authenticator\nalgorithm  (i.e.  ecdsa-sk  or  ed25519-sk) to always require the signature to attest\nthat a physically present user explicitly confirmed the  authentication  (usually  by\ntouching the authenticator).  By default, sshd(8) requires user presence unless over‐\nridden  with  an authorizedkeys option.  The touch-required flag disables this over‐\nride.\n\nThe verify-required option requires a FIDO key signature attest  that  the  user  was\nverified, e.g. via a PIN.\n\nNeither the touch-required or verify-required options have any effect for other, non-\nFIDO, public key types.\n"
                    },
                    {
                        "name": "PubkeyAuthentication",
                        "content": "Specifies whether public key authentication is allowed.  The default is yes.\n"
                    },
                    {
                        "name": "RekeyLimit",
                        "content": "Specifies  the  maximum amount of data that may be transmitted or received before the\nsession key is renegotiated, optionally followed by a maximum amount of time that may\npass before the session key is renegotiated.  The  first  argument  is  specified  in\nbytes  and may have a suffix of ‘K’, ‘M’, or ‘G’ to indicate Kilobytes, Megabytes, or\nGigabytes, respectively.  The default is between ‘1G’ and ‘4G’, depending on the  ci‐\npher.  The optional second value is specified in seconds and may use any of the units\ndocumented  in  the  “TIME  FORMATS”  section.   The  default value for RekeyLimit is\ndefault none, which means that rekeying  is  performed  after  the  cipher's  default\namount of data has been sent or received and no time based rekeying is done.\n"
                    },
                    {
                        "name": "RequiredRSASize",
                        "content": "Specifies  the  minimum  RSA  key  size (in bits) that sshd(8) will accept.  User and\nhost-based authentication keys smaller than this limit will be refused.  The  default\nis 1024 bits.  Note that this limit may only be raised from the default.\n"
                    },
                    {
                        "name": "RevokedKeys",
                        "content": "Specifies revoked public keys file, or none to not use one.  Keys listed in this file\nwill  be  refused for public key authentication.  Note that if this file is not read‐\nable, then public key authentication will be refused for  all  users.   Keys  may  be\nspecified as a text file, listing one public key per line, or as an OpenSSH Key Revo‐\ncation  List  (KRL) as generated by ssh-keygen(1).  For more information on KRLs, see\nthe KEY REVOCATION LISTS section in ssh-keygen(1).\n"
                    },
                    {
                        "name": "SecurityKeyProvider",
                        "content": "Specifies a path to a library that will be  used  when  loading  FIDO  authenticator-\nhosted keys, overriding the default of using the built-in USB HID support.\n\nSetEnv  Specifies  one  or  more  environment  variables  to set in child sessions started by\nsshd(8) as “NAME=VALUE”.  The environment value may be quoted (e.g.  if  it  contains\nwhitespace characters).  Environment variables set by SetEnv override the default en‐\nvironment   and   any   variables   specified   by   the   user   via   AcceptEnv  or\nPermitUserEnvironment.\n"
                    },
                    {
                        "name": "StreamLocalBindMask",
                        "content": "Sets the octal file creation mode mask  (umask)  used  when  creating  a  Unix-domain\nsocket  file  for local or remote port forwarding.  This option is only used for port\nforwarding to a Unix-domain socket file.\n\nThe default value is 0177, which creates a Unix-domain socket file that  is  readable\nand  writable  only by the owner.  Note that not all operating systems honor the file\nmode on Unix-domain socket files.\n"
                    },
                    {
                        "name": "StreamLocalBindUnlink",
                        "content": "Specifies whether to remove an existing Unix-domain socket file for local  or  remote\nport  forwarding  before  creating  a new one.  If the socket file already exists and\nStreamLocalBindUnlink is not enabled, sshd will be unable to forward the port to  the\nUnix-domain  socket file.  This option is only used for port forwarding to a Unix-do‐\nmain socket file.\n\nThe argument must be yes or no.  The default is no.\n"
                    },
                    {
                        "name": "StrictModes",
                        "content": "Specifies whether sshd(8) should check file modes and ownership of the  user's  files\nand  home  directory  before  accepting  login.   This  is normally desirable because\nnovices sometimes accidentally leave their directory or  files  world-writable.   The\ndefault  is yes.  Note that this does not apply to ChrootDirectory, whose permissions\nand ownership are checked unconditionally.\n"
                    },
                    {
                        "name": "Subsystem",
                        "content": "Configures an external subsystem (e.g. file transfer daemon).  Arguments should be  a\nsubsystem  name and a command (with optional arguments) to execute upon subsystem re‐\nquest.\n\nThe command sftp-server implements the SFTP file transfer subsystem.\n\nAlternately the name internal-sftp implements an in-process SFTP  server.   This  may\nsimplify configurations using ChrootDirectory to force a different filesystem root on\nclients.\n\nBy default no subsystems are defined.\n"
                    },
                    {
                        "name": "SyslogFacility",
                        "content": "Gives  the facility code that is used when logging messages from sshd(8).  The possi‐\nble values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3,  LOCAL4,  LOCAL5,\nLOCAL6, LOCAL7.  The default is AUTH.\n"
                    },
                    {
                        "name": "TCPKeepAlive",
                        "content": "Specifies  whether  the  system should send TCP keepalive messages to the other side.\nIf they are sent, death of the connection or crash of one of  the  machines  will  be\nproperly noticed.  However, this means that connections will die if the route is down\ntemporarily,  and some people find it annoying.  On the other hand, if TCP keepalives\nare not sent, sessions may hang indefinitely on the server, leaving \"ghost\" users and\nconsuming server resources.\n\nThe default is yes (to send TCP keepalive messages), and the server  will  notice  if\nthe  network  goes  down  or the client host crashes.  This avoids infinitely hanging\nsessions.\n\nTo disable TCP keepalive messages, the value should be set to no.\n\nThis option was formerly called KeepAlive.\n"
                    },
                    {
                        "name": "TrustedUserCAKeys",
                        "content": "Specifies a file containing public keys of certificate authorities that  are  trusted\nto  sign  user  certificates  for  authentication,  or none to not use one.  Keys are\nlisted one per line; empty lines and comments starting with ‘#’ are  allowed.   If  a\ncertificate is presented for authentication and has its signing CA key listed in this\nfile, then it may be used for authentication for any user listed in the certificate's\nprincipals  list.   Note that certificates that lack a list of principals will not be\npermitted for authentication using TrustedUserCAKeys.  For more details  on  certifi‐\ncates, see the CERTIFICATES section in ssh-keygen(1).\n"
                    },
                    {
                        "name": "UnusedConnectionTimeout",
                        "content": "Specifies  whether  and  how  quickly sshd(8) should close client connections with no\nopen channels.  Open channels include active shell, command  execution  or  subsystem\nsessions, connected network, socket, agent or X11 forwardings.  Forwarding listeners,\nsuch as those from the ssh(1) -R flag, are not considered as open channels and do not\nprevent the timeout.  The timeout value is specified in seconds or may use any of the\nunits documented in the “TIME FORMATS” section.\n\nNote  that  this timeout starts when the client connection completes user authentica‐\ntion but before the client has an opportunity to open any channels.   Caution  should\nbe  used when using short timeout values, as they may not provide sufficient time for\nthe client to request and open its channels before terminating the connection.\n\nThe default none is to never expire connections for having no  open  channels.   This\noption may be useful in conjunction with ChannelTimeout.\n\nUseDNS  Specifies  whether sshd(8) should look up the remote host name, and to check that the\nresolved host name for the remote IP address maps back to the very same IP address.\n\nIf this option is set to no (the default) then only addresses and not host names  may\nbe used in ~/.ssh/authorizedkeys from and sshdconfig Match Host directives.\n\nUsePAM  Enables  the  Pluggable Authentication Module interface.  If set to yes this will en‐\nable PAM authentication using KbdInteractiveAuthentication and PasswordAuthentication\nin addition to PAM account and  session  module  processing  for  all  authentication\ntypes.\n\nBecause  PAM keyboard-interactive authentication usually serves an equivalent role to\npassword  authentication,  you  should  disable  either   PasswordAuthentication   or\nKbdInteractiveAuthentication.\n\nIf  UsePAM  is  enabled, you will not be able to run sshd(8) as a non-root user.  The\ndefault is no.\n"
                    },
                    {
                        "name": "VersionAddendum",
                        "content": "Optionally specifies additional text to append to the SSH protocol banner sent by the\nserver upon connection.  The default is none.\n"
                    },
                    {
                        "name": "X11DisplayOffset",
                        "content": "Specifies the first display number available for sshd(8)'s X11 forwarding.  This pre‐\nvents sshd from interfering with real X11 servers.  The default is 10.\n"
                    },
                    {
                        "name": "X11Forwarding",
                        "content": "Specifies whether X11 forwarding is permitted.  The argument must be yes or no.   The\ndefault is no.\n\nWhen X11 forwarding is enabled, there may be additional exposure to the server and to\nclient  displays if the sshd(8) proxy display is configured to listen on the wildcard\naddress (see X11UseLocalhost), though this is not the default.  Additionally, the au‐\nthentication spoofing and authentication data verification and substitution occur  on\nthe  client side.  The security risk of using X11 forwarding is that the client's X11\ndisplay server may be exposed to attack when the SSH client requests forwarding  (see\nthe  warnings  for  ForwardX11  in sshconfig(5)).  A system administrator may have a\nstance in which they want to protect clients that may expose themselves to attack  by\nunwittingly requesting X11 forwarding, which can warrant a no setting.\n\nNote  that  disabling X11 forwarding does not prevent users from forwarding X11 traf‐\nfic, as users can always install their own forwarders.\n"
                    },
                    {
                        "name": "X11UseLocalhost",
                        "content": "Specifies whether sshd(8) should bind the X11 forwarding server to the  loopback  ad‐\ndress  or  to  the wildcard address.  By default, sshd binds the forwarding server to\nthe loopback address and sets the hostname part of the DISPLAY  environment  variable\nto localhost.  This prevents remote hosts from connecting to the proxy display.  How‐\never,   some   older   X11   clients   may  not  function  with  this  configuration.\nX11UseLocalhost may be set to no to specify that  the  forwarding  server  should  be\nbound to the wildcard address.  The argument must be yes or no.  The default is yes.\n"
                    },
                    {
                        "name": "XAuthLocation",
                        "content": "Specifies the full pathname of the xauth(1) program, or none to not use one.  The de‐\nfault is /usr/bin/xauth.\n"
                    }
                ]
            },
            "TIME FORMATS": {
                "content": "sshd(8)  command-line  arguments  and configuration file options that specify time may be ex‐\npressed using a sequence of the form: time[qualifier], where time is a positive integer value\nand qualifier is one of the following:\n\n⟨none⟩  seconds\ns | S   seconds\nm | M   minutes\nh | H   hours\nd | D   days\nw | W   weeks\n\nEach member of the sequence is added together to calculate the total time value.\n\nTime format examples:\n\n600     600 seconds (10 minutes)\n10m     10 minutes\n1h30m   1 hour 30 minutes (90 minutes)\n",
                "subsections": []
            },
            "TOKENS": {
                "content": "Arguments to some keywords can make use of tokens, which are expanded at runtime:\n\n%%    A literal ‘%’.\n%C    Identifies the connection  endpoints,  containing  four  space-separated  values:\nclient address, client port number, server address, and server port number.\n%F    The fingerprint of the CA key.\n%f    The fingerprint of the key or certificate.\n%h    The home directory of the user.\n%i    The key ID in the certificate.\n%K    The base64-encoded CA key.\n%k    The base64-encoded key or certificate for authentication.\n%s    The serial number of the certificate.\n%T    The type of the CA key.\n%t    The key or certificate type.\n%U    The numeric user ID of the target user.\n%u    The username.\n\nAuthorizedKeysCommand accepts the tokens %%, %C, %D, %f, %h, %k, %t, %U, and %u.\n\nAuthorizedKeysFile accepts the tokens %%, %h, %U, and %u.\n\nAuthorizedPrincipalsCommand  accepts  the  tokens %%, %C, %D, %F, %f, %h, %i, %K, %k, %s, %T,\n%t, %U, and %u.\n\nAuthorizedPrincipalsFile accepts the tokens %%, %h, %U, and %u.\n\nChrootDirectory accepts the tokens %%, %h, %U, and %u.\n",
                "subsections": []
            },
            "FILES": {
                "content": "/etc/ssh/sshdconfig\nContains configuration data for sshd(8).  This file should be writable by root  only,\nbut it is recommended (though not necessary) that it be world-readable.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "sftp-server(8), sshd(8)\n",
                "subsections": []
            },
            "AUTHORS": {
                "content": "OpenSSH  is  a  derivative of the original and free ssh 1.2.12 release by Tatu Ylonen.  Aaron\nCampbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt  and  Dug  Song  removed  many\nbugs, re-added newer features and created OpenSSH.  Markus Friedl contributed the support for\nSSH  protocol  versions  1.5 and 2.0.  Niels Provos and Markus Friedl contributed support for\nprivilege separation.\n\nDebian                                      July 28, 2023                             SSHDCONFIG(5)",
                "subsections": []
            }
        }
    }
}