| SSH_CONFIG(5) | File Formats Manual | SSH_CONFIG(5) | 
ssh_config —
Unless noted otherwise, for each parameter, the first obtained
    value will be used. The configuration files contain sections separated by
    Host specifications, and that section is only
    applied for hosts that match one of the patterns given in the specification.
    The matched host name is usually the one given on the command line (see the
    CanonicalizeHostname option for exceptions).
Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.
The file contains keyword-argument pairs, one per line. Lines
    starting with ‘#’ and empty lines are
    interpreted as comments. Arguments may optionally be enclosed in double
    quotes (") in order to represent arguments containing spaces.
    Configuration options may be separated by whitespace or optional whitespace
    and exactly one ‘=’; the latter format
    is useful to avoid the need to quote whitespace when specifying
    configuration options using the ssh,
    scp, and sftp
    -o option.
The possible keywords and their meanings are as follows (note that keywords are case-insensitive and arguments are case-sensitive):
HostHost or Match keyword) to
      be only for those hosts that match one of the patterns given after the
      keyword. If more than one pattern is provided, they should be separated by
      whitespace. A single ‘*’ as a
      pattern can be used to provide global defaults for all hosts. The host is
      usually the hostname argument given on the command
      line (see the CanonicalizeHostname keyword for
      exceptions).
    A pattern entry may be negated by prefixing it with an
        exclamation mark (‘!’). If a negated entry is matched,
        then the Host entry is ignored, regardless of
        whether any other patterns on the line match. Negated matches are
        therefore useful to provide exceptions for wildcard matches.
See PATTERNS for more information on patterns.
MatchHost or Match keyword) to
      be used only when the conditions following the
      Match keyword are satisfied. Match conditions are
      specified using one or more criteria or the single token
      all which always matches. The available criteria
      keywords are: canonical,
      final, exec,
      localnetwork, host,
      originalhost, Tag,
      user, and localuser. The
      all criteria must appear alone or immediately
      after canonical or final.
      Other criteria may be combined arbitrarily. All criteria but
      all, canonical, and
      final require an argument. Criteria may be negated
      by prepending an exclamation mark (‘!’).
    The canonical keyword matches only
        when the configuration file is being re-parsed after hostname
        canonicalization (see the CanonicalizeHostname
        option). This may be useful to specify conditions that work with
        canonical host names only.
The final keyword requests that the
        configuration be re-parsed (regardless of whether
        CanonicalizeHostname is enabled), and matches
        only during this final pass. If
        CanonicalizeHostname is enabled, then
        canonical and final
        match during the same pass.
The exec keyword executes the
        specified command under the user's shell. If the command returns a zero
        exit status then the condition is considered true. Commands containing
        whitespace characters must be quoted. Arguments to
        exec accept the tokens described in the
        TOKENS section.
The localnetwork keyword matches the
        addresses of active local network interfaces against the supplied list
        of networks in CIDR format. This may be convenient for varying the
        effective configuration on devices that roam between networks. Note that
        network address is not a trustworthy criteria in many situations (e.g.
        when the network is automatically configured using DHCP) and so caution
        should be applied if using it to control security-sensitive
        configuration.
The other keywords' criteria must be single entries or
        comma-separated lists and may use the wildcard and negation operators
        described in the PATTERNS section.
        The criteria for the host keyword are matched
        against the target hostname, after any substitution by the
        Hostname or
        CanonicalizeHostname options. The
        originalhost keyword matches against the
        hostname as it was specified on the command-line. The
        tagged keyword matches a tag name specified by a
        prior Tag directive or on the
        ssh(1) command-line using the
        -P flag. The user
        keyword matches against the target username on the remote host. The
        localuser keyword matches against the name of
        the local user running ssh(1)
        (this keyword may be useful in system-wide
        ssh_config files).
AddKeysToAgentyes and a key is loaded from a
      file, the key and its passphrase are added to the agent with the default
      lifetime, as if by
      ssh-add(1). If this option
      is set to ask,
      ssh(1) will require
      confirmation using the SSH_ASKPASS program before
      adding a key (see
      ssh-add(1) for details). If
      this option is set to confirm, each use of the key
      must be confirmed, as if the -c option was
      specified to ssh-add(1). If
      this option is set to no, no keys are added to the
      agent. Alternately, this option may be specified as a time interval using
      the format described in the TIME
      FORMATS section of
      sshd_config(5) to
      specify the key's lifetime in
      ssh-agent(1), after which
      it will automatically be removed. The argument must be
      no (the default), yes,
      confirm (optionally followed by a time interval),
      ask or a time interval.AddressFamilyany (the default), inet
      (use IPv4 only), or inet6 (use IPv6 only).BatchModeyes, user interaction such as password
      prompts and host key confirmation requests will be disabled. This option
      is useful in scripts and other batch jobs where no user is present to
      interact with ssh(1). The
      argument must be yes or no
      (the default).BindAddressBindInterfaceCanonicalDomainsCanonicalizeHostname is enabled, this option
      specifies the list of domain suffixes in which to search for the specified
      destination host.CanonicalizeFallbackLocalyes, will attempt to look up
      the unqualified hostname using the system resolver's search rules. A value
      of no will cause
      ssh(1) to fail instantly if
      CanonicalizeHostname is enabled and the target
      hostname cannot be found in any of the domains specified by
      CanonicalDomains.CanonicalizeHostnameno, is not to perform any name rewriting
      and let the system resolver handle all hostname lookups. If set to
      yes then, for connections that do not use a
      ProxyCommand or ProxyJump,
      ssh(1) will attempt to
      canonicalize the hostname specified on the command line using the
      CanonicalDomains suffixes and
      CanonicalizePermittedCNAMEs rules. If
      CanonicalizeHostname is set to
      always, then canonicalization is applied to
      proxied connections too.
    If this option is enabled, then the configuration files are
        processed again using the new target name to pick up any new
        configuration in matching Host and
        Match stanzas. A value of
        none disables the use of a
        ProxyJump host.
CanonicalizeMaxDotsCanonicalizePermittedCNAMEsFor example, “*.a.example.com:*.b.example.com,*.c.example.com” will allow hostnames matching “*.a.example.com” to be canonicalized to names in the “*.b.example.com” or “*.c.example.com” domains.
A single argument of “none” causes no CNAMEs to be considered for canonicalization. This is the default behaviour.
CASignatureAlgorithms
ssh-ed25519,ecdsa-sha2-nistp256,
ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
sk-ssh-ed25519@openssh.com,
sk-ecdsa-sha2-nistp256@openssh.com,
rsa-sha2-512,rsa-sha2-256
    
    If the specified list begins with a ‘+’ character, then the specified algorithms will be appended to the default set instead of replacing them. If the specified list begins with a ‘-’ character, then the specified algorithms (including wildcards) will be removed from the default set instead of replacing them.
ssh(1) will not accept host certificates signed using algorithms other than those specified.
CertificateFileIdentityFile directive
      or -i flag to
      ssh(1), via
      ssh-agent(1), or via a
      PKCS11Provider or
      SecurityKeyProvider.
    Arguments to CertificateFile may use
        the tilde syntax to refer to a user's home directory, the tokens
        described in the TOKENS section and
        environment variables as described in the
        ENVIRONMENT VARIABLES
        section.
It is possible to have multiple certificate files specified in
        configuration files; these certificates will be tried in sequence.
        Multiple CertificateFile directives will add to
        the list of certificates used for authentication.
ChannelTimeoutThe timeout value “interval” is specified in seconds or may use any of the units documented in the TIME FORMATS section. For example, “session=5m” would cause the interactive session to terminate after five minutes of inactivity. Specifying a zero value disables the inactivity timeout.
The available channel types include:
agent-connectiondirect-tcpip,
        direct-streamlocal@openssh.comLocalForward or
          DynamicForward.forwarded-tcpip,
        forwarded-streamlocal@openssh.comRemoteForward.sessiontun-connectionTunnelForward connections.x11-connectionNote that in all the above cases, terminating an inactive session does not guarantee to remove all resources associated with the session, e.g. shell processes or X11 clients relating to the session may continue to execute.
Moreover, terminating an inactive channel or session does not necessarily close the SSH connection, nor does it prevent a client from requesting another channel of the same type. In particular, expiring an inactive forwarding session does not prevent another identical forwarding from being subsequently created.
The default is not to expire channels of any type for inactivity.
CheckHostIPyes,
      ssh(1) will additionally check
      the host IP address in the known_hosts file. This
      allows it to detect if a host key changed due to DNS spoofing and will add
      addresses of destination hosts to
      ~/.ssh/known_hosts in the process, regardless of
      the setting of StrictHostKeyChecking. If the
      option is set to no (the default), the check will
      not be executed.CiphersThe supported ciphers are:
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
    
    The default is:
chacha20-poly1305@openssh.com,
aes128-ctr,aes192-ctr,aes256-ctr,
aes128-gcm@openssh.com,aes256-gcm@openssh.com
    
    The list of available ciphers may also be obtained using “ssh -Q cipher”.
ClearAllForwardingsyes or no (the
    default).Compressionyes or no (the
    default).ConnectionAttemptsConnectTimeoutControlMasteryes,
      ssh(1) will listen for
      connections on a control socket specified using the
      ControlPath argument. Additional sessions can
      connect to this socket using the same ControlPath
      with ControlMaster set to
      no (the default). These sessions will try to reuse
      the master instance's network connection rather than initiating new ones,
      but will fall back to connecting normally if the control socket does not
      exist, or is not listening.
    Setting this to ask will cause
        ssh(1) to listen for control
        connections, but require confirmation using
        ssh-askpass(1). If
        the ControlPath cannot be opened,
        ssh(1) will continue without
        connecting to a master instance.
X11 and ssh-agent(1) forwarding is supported over these multiplexed connections, however the display and agent forwarded will be the one belonging to the master connection i.e. it is not possible to forward multiple displays or agents.
Two additional options allow for opportunistic multiplexing:
        try to use a master connection but fall back to creating a new one if
        one does not already exist. These options are:
        auto and autoask. The
        latter requires confirmation like the ask
        option.
ControlPathControlMaster section above or
      the string none to disable connection sharing.
      Arguments to ControlPath may use the tilde syntax
      to refer to a user's home directory, the tokens described in the
      TOKENS section and environment variables
      as described in the
      ENVIRONMENT VARIABLES
      section. It is recommended that any ControlPath
      used for opportunistic connection sharing include at least %h, %p, and %r
      (or alternatively %C) and be placed in a directory that is not writable by
      other users. This ensures that shared connections are uniquely
    identified.ControlPersistControlMaster,
      specifies that the master connection should remain open in the background
      (waiting for future client connections) after the initial client
      connection has been closed. If set to no (the
      default), then the master connection will not be placed into the
      background, and will close as soon as the initial client connection is
      closed. If set to yes or 0, then the master
      connection will remain in the background indefinitely (until killed or
      closed via a mechanism such as the “ssh -O exit”). If set to
      a time in seconds, or a time in any of the formats documented in
      sshd_config(5), then
      the backgrounded master connection will automatically terminate after it
      has remained idle (with no client connections) for the specified
    time.DynamicForwardThe argument must be
        [bind_address:]port. IPv6
        addresses can be specified by enclosing addresses in square brackets. By
        default, the local port is bound in accordance with the
        GatewayPorts setting. However, an explicit
        bind_address may be used to bind the connection to
        a specific address. The bind_address of
        localhost indicates that the listening port be
        bound for local use only, while an empty address or ‘*’
        indicates that the port should be available from all interfaces.
Currently the SOCKS4 and SOCKS5 protocols are supported, and ssh(1) will act as a SOCKS server. Multiple forwardings may be specified, and additional forwardings can be given on the command line. Only the superuser can forward privileged ports.
EnableEscapeCommandlineEscapeChar
      menu for interactive sessions (default
      ‘~C’). By default, the command line
      is disabled.EnableSSHKeysignyes in the global client
      configuration file /etc/ssh/ssh_config enables the
      use of the helper program
      ssh-keysign(8) during
      HostbasedAuthentication. The argument must be
      yes or no (the default).
      This option should be placed in the non-hostspecific section. See
      ssh-keysign(8) for more
      information.EscapeChar~’). The escape character can also
      be set on the command line. The argument should be a single character,
      ‘^’ followed by a letter, or
      none to disable the escape character entirely
      (making the connection transparent for binary data).ExitOnForwardFailureExitOnForwardFailure does not apply to connections
      made over port forwardings and will not, for example, cause
      ssh(1) to exit if TCP
      connections to the ultimate forwarding destination fail. The argument must
      be yes or no (the
      default).FingerprintHashmd5 and
      sha256 (the default).ForkAfterAuthenticationssh to go to background just before
      command execution. This is useful if ssh is going
      to ask for passwords or passphrases, but the user wants it in the
      background. This implies the StdinNull
      configuration option being set to “yes”. The recommended way
      to start X11 programs at a remote site is with something like
      ssh -f host xterm, which is the same as
      ssh host xterm if the
      ForkAfterAuthentication configuration option is
      set to “yes”.
    If the ExitOnForwardFailure
        configuration option is set to “yes”, then a client
        started with the ForkAfterAuthentication
        configuration option being set to “yes” will wait for all
        remote port forwards to be successfully established before placing
        itself in the background. The argument to this keyword must be
        yes (same as the -f
        option) or no (the default).
ForwardAgentyes, no (the default), an
      explicit path to an agent socket or the name of an environment variable
      (beginning with ‘$’) in which to find the path.
    Agent forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the agent's Unix-domain socket) can access the local agent through the forwarded connection. An attacker cannot obtain key material from the agent, however they can perform operations on the keys that enable them to authenticate using the identities loaded into the agent.
ForwardX11DISPLAY set. The argument
      must be yes or no (the
      default).
    X11 forwarding should be enabled with caution. Users with the
        ability to bypass file permissions on the remote host (for the user's
        X11 authorization database) can access the local X11 display through the
        forwarded connection. An attacker may then be able to perform activities
        such as keystroke monitoring if the
        ForwardX11Trusted option is also enabled.
ForwardX11TimeoutForwardX11Timeout to zero will disable the timeout
      and permit X11 forwarding for the life of the connection. The default is
      to disable untrusted X11 forwarding after twenty minutes has elapsed.ForwardX11Trustedyes, remote X11 clients
      will have full access to the original X11 display.
    If this option is set to no (the
        default), remote X11 clients will be considered untrusted and prevented
        from stealing or tampering with data belonging to trusted X11 clients.
        Furthermore, the xauth(1)
        token used for the session will be set to expire after 20 minutes.
        Remote clients will be refused access after this time.
See the X11 SECURITY extension specification for full details on the restrictions imposed on untrusted clients.
GatewayPortsGatewayPorts can be used to specify that ssh
      should bind local port forwardings to the wildcard address, thus allowing
      remote hosts to connect to forwarded ports. The argument must be
      yes or no (the
    default).GlobalKnownHostsFileGSSAPIAuthenticationno.GSSAPIDelegateCredentialsno.HashKnownHostsno. Note that existing
      names and addresses in known hosts files will not be converted
      automatically, but may be manually hashed using
      ssh-keygen(1).HostbasedAcceptedAlgorithms
ssh-ed25519-cert-v01@openssh.com,
ecdsa-sha2-nistp256-cert-v01@openssh.com,
ecdsa-sha2-nistp384-cert-v01@openssh.com,
ecdsa-sha2-nistp521-cert-v01@openssh.com,
sk-ssh-ed25519-cert-v01@openssh.com,
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,
rsa-sha2-512-cert-v01@openssh.com,
rsa-sha2-256-cert-v01@openssh.com,
ssh-ed25519,
ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
sk-ssh-ed25519@openssh.com,
sk-ecdsa-sha2-nistp256@openssh.com,
rsa-sha2-512,rsa-sha2-256
    
    The -Q option of
        ssh(1) may be used to list
        supported signature algorithms. This was formerly named
        HostbasedKeyTypes.
HostbasedAuthenticationyes or
      no (the default).HostKeyAlgorithms
ssh-ed25519-cert-v01@openssh.com,
ecdsa-sha2-nistp256-cert-v01@openssh.com,
ecdsa-sha2-nistp384-cert-v01@openssh.com,
ecdsa-sha2-nistp521-cert-v01@openssh.com,
sk-ssh-ed25519-cert-v01@openssh.com,
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,
rsa-sha2-512-cert-v01@openssh.com,
rsa-sha2-256-cert-v01@openssh.com,
ssh-ed25519,
ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
sk-ecdsa-sha2-nistp256@openssh.com,
sk-ssh-ed25519@openssh.com,
rsa-sha2-512,rsa-sha2-256
    
    If hostkeys are known for the destination host then this default is modified to prefer their algorithms.
The list of available signature algorithms may also be obtained using “ssh -Q HostKeyAlgorithms”.
HostKeyAliasHostnameHostname accept the tokens described in the
      TOKENS section. Numeric IP addresses are
      also permitted (both on the command line and in
      Hostname specifications). The default is the name
      given on the command line.IdentitiesOnlyssh_config files or passed on the
      ssh(1) command-line), even if
      ssh-agent(1) or a
      PKCS11Provider or
      SecurityKeyProvider offers more identities. The
      argument to this keyword must be yes or
      no (the default). This option is intended for
      situations where ssh-agent offers many different identities.IdentityAgentThis option overrides the
        SSH_AUTH_SOCK environment variable and can be
        used to select a specific agent. Setting the socket name to
        none disables the use of an authentication
        agent. If the string “SSH_AUTH_SOCK” is specified, the
        location of the socket will be read from the
        SSH_AUTH_SOCK environment variable. Otherwise if
        the specified value begins with a ‘$’ character, then it
        will be treated as an environment variable containing the location of
        the socket.
Arguments to IdentityAgent may use the
        tilde syntax to refer to a user's home directory, the tokens described
        in the TOKENS section and environment
        variables as described in the
        ENVIRONMENT VARIABLES
        section.
IdentityFileIdentitiesOnly is set. If no certificates
      have been explicitly specified by CertificateFile,
      ssh(1) will try to load
      certificate information from the filename obtained by appending
      -cert.pub to the path of a specified
      IdentityFile.
    Arguments to IdentityFile may use the
        tilde syntax to refer to a user's home directory or the tokens described
        in the TOKENS section. Alternately an
        argument of none may be used to indicate no
        identity files should be loaded.
It is possible to have multiple identity files specified in
        configuration files; all these identities will be tried in sequence.
        Multiple IdentityFile directives will add to the
        list of identities tried (this behaviour differs from that of other
        configuration directives).
IdentityFile may be used in
        conjunction with IdentitiesOnly to select which
        identities in an agent are offered during authentication.
        IdentityFile may also be used in conjunction
        with CertificateFile in order to provide any
        certificate also needed for authentication with the identity.
IgnoreUnknownssh_config contains options that are
      unrecognised by ssh(1). It is
      recommended that IgnoreUnknown be listed early in
      the configuration file as it will not be applied to unknown options that
      appear before it.IncludeInclude directive may appear inside a
      Match or Host block to
      perform conditional inclusion.IPQoSaf11, af12,
      af13, af21,
      af22, af23,
      af31, af32,
      af33, af41,
      af42, af43,
      cs0, cs1,
      cs2, cs3,
      cs4, cs5,
      cs6, cs7,
      ef, le,
      lowdelay, throughput,
      reliability, a numeric value, or
      none to use the operating system default. This
      option may take one or two arguments, separated by whitespace. If one
      argument is specified, it is used as the packet class unconditionally. If
      two values are specified, the first is automatically selected for
      interactive sessions and the second for non-interactive sessions. The
      default is af21 (Low-Latency Data) for interactive
      sessions and cs1 (Lower Effort) for
      non-interactive sessions.IPv6PreferTemporaryBindAddress, this defines whether to prefer
      temporary addresses as source address. The argument to this can by either
      yes, meaning to prefer any temporary address, or
      no, resulting in the use of a permanent address,
      if available. If this option isn't specified, the address selection
      depends on the OS configuration.KbdInteractiveAuthenticationyes (the default) or
      no.
      ChallengeResponseAuthentication is a deprecated
      alias for this.KbdInteractiveDevicesbsdauth, pam, and
      skey.KexAlgorithms
sntrup761x25519-sha512@openssh.com,
curve25519-sha256,curve25519-sha256@libssh.org,
ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
diffie-hellman-group-exchange-sha256,
diffie-hellman-group16-sha512,
diffie-hellman-group18-sha512,
diffie-hellman-group14-sha256
    
    The list of available key exchange algorithms may also be obtained using “ssh -Q kex”.
KnownHostsCommandUserKnownHostsFile and
      GlobalKnownHostsFile. This command is executed
      after the files have been read. It may write host key lines to standard
      output in identical format to the usual files (described in the
      VERIFYING HOST KEYS section
      in ssh(1)). Arguments to
      KnownHostsCommand accept the tokens described in
      the TOKENS section. The command may be
      invoked multiple times per connection: once when preparing the preference
      list of host key algorithms to use, again to obtain the host key for the
      requested host name and, if CheckHostIP is
      enabled, one more time to obtain the host key matching the server's
      address. If the command exits abnormally or returns a non-zero exit status
      then the connection is terminated.LocalCommandLocalCommand accept the tokens described in the
      TOKENS section.
    The command is run synchronously and does not have access to the session of the ssh(1) that spawned it. It should not be used for interactive commands.
This directive is ignored unless
        PermitLocalCommand has been enabled.
LocalForwardIPv6 addresses can be specified by enclosing addresses in
        square brackets. Multiple forwardings may be specified, and additional
        forwardings can be given on the command line. Only the superuser can
        forward privileged ports. By default, the local port is bound in
        accordance with the GatewayPorts setting.
        However, an explicit bind_address may be used to
        bind the connection to a specific address. The
        bind_address of localhost
        indicates that the listening port be bound for local use only, while an
        empty address or ‘*’ indicates that the port should be
        available from all interfaces. Unix domain socket paths may use the
        tokens described in the TOKENS section
        and environment variables as described in the
        ENVIRONMENT VARIABLES
        section.
LogLevelLogVerbose
kex.c:*:1000,*:kex_exchange_identification():*,packet.c:*
    
    would enable detailed logging for line 1000 of
        kex.c, everything in the
        kex_exchange_identification() function, and all
        code in the packet.c file. This option is
        intended for debugging and no overrides are enabled by default.
MACsThe algorithms that contain “-etm” calculate the MAC after encryption (encrypt-then-mac). These are considered safer and their use recommended.
The default is:
umac-64-etm@openssh.com,umac-128-etm@openssh.com,
hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,
hmac-sha1-etm@openssh.com,
umac-64@openssh.com,umac-128@openssh.com,
hmac-sha2-256,hmac-sha2-512,hmac-sha1
    
    The list of available MAC algorithms may also be obtained using “ssh -Q mac”.
NoHostAuthenticationForLocalhostyes or
      no (the default).NumberOfPasswordPromptsObscureKeystrokeTimingyes, no or an
      interval specifier of the form
      interval:milliseconds (e.g.
      interval:80 for 80 milliseconds). The default is
      to obscure keystrokes using a 20ms packet interval. Note that smaller
      intervals will result in higher fake keystroke packet rates.PasswordAuthenticationyes (the default) or
      no.PermitLocalCommandLocalCommand
      option or using the !command
      escape sequence in ssh(1). The
      argument must be yes or no
      (the default).PermitRemoteOpenRemoteForward is used as a SOCKS
      proxy. The forwarding specification must be one of the following forms:
    
    PermitRemoteOpen
          host:portPermitRemoteOpen
          IPv4_addr:portPermitRemoteOpen
          [IPv6_addr]:portMultiple forwards may be specified by separating them with
        whitespace. An argument of any can be used to
        remove all restrictions and permit any forwarding requests. An argument
        of none can be used to prohibit all forwarding
        requests. The wildcard ‘*’ can be used for host or port to
        allow all hosts or ports respectively. Otherwise, no pattern matching or
        address lookups are performed on supplied names.
PKCS11Providernone to
      indicate that no provider should be used (the default). The argument to
      this keyword is a path to the PKCS#11 shared library
      ssh(1) should use to
      communicate with a PKCS#11 token providing keys for user
    authentication.PortPreferredAuthenticationskeyboard-interactive) over another method (e.g.
      password). The default is:
    
gssapi-with-mic,hostbased,publickey,
keyboard-interactive,password
    
    ProxyCommandexec’ directive to avoid a
      lingering shell process.
    Arguments to ProxyCommand accept the
        tokens described in the TOKENS section.
        The command can be basically anything, and should read from its standard
        input and write to its standard output. It should eventually connect an
        sshd(8) server running on
        some machine, or execute sshd -i somewhere. Host
        key management will be done using the Hostname
        of the host being connected (defaulting to the name typed by the user).
        Setting the command to none disables this option
        entirely. Note that CheckHostIP is not available
        for connects with a proxy command.
This directive is useful in conjunction with nc(1) and its proxy support. For example, the following directive would connect via an HTTP proxy at 192.0.2.0:
ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p
    
    ProxyJumpProxyJump host and
      then establishing a TCP forwarding to the ultimate target from there.
      Setting the host to none disables this option
      entirely.
    Note that this option will compete with the
        ProxyCommand option - whichever is specified
        first will prevent later instances of the other from taking effect.
Note also that the configuration for the destination host (either supplied via the command-line or the configuration file) is not generally applied to jump hosts. ~/.ssh/config should be used if specific configuration is required for jump hosts.
ProxyUseFdpassProxyCommand will pass a connected
      file descriptor back to ssh(1)
      instead of continuing to execute and pass data. The default is
      no.PubkeyAcceptedAlgorithms
ssh-ed25519-cert-v01@openssh.com,
ecdsa-sha2-nistp256-cert-v01@openssh.com,
ecdsa-sha2-nistp384-cert-v01@openssh.com,
ecdsa-sha2-nistp521-cert-v01@openssh.com,
sk-ssh-ed25519-cert-v01@openssh.com,
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,
rsa-sha2-512-cert-v01@openssh.com,
rsa-sha2-256-cert-v01@openssh.com,
ssh-ed25519,
ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
sk-ssh-ed25519@openssh.com,
sk-ecdsa-sha2-nistp256@openssh.com,
rsa-sha2-512,rsa-sha2-256
    
    The list of available signature algorithms may also be obtained using “ssh -Q PubkeyAcceptedAlgorithms”.
PubkeyAuthenticationyes (the default),
      no, unbound or
      host-bound. The final two options enable public
      key authentication while respectively disabling or enabling the OpenSSH
      host-bound authentication protocol extension required for restricted
      ssh-agent(1)
    forwarding.RekeyLimitRekeyLimit is
      default none, which means that rekeying is
      performed after the cipher's default amount of data has been sent or
      received and no time based rekeying is done.RemoteCommandRemoteCommand accept the tokens described in the
      TOKENS section.RemoteForwardPermitRemoteOpen.
    IPv6 addresses can be specified by enclosing addresses in square brackets. Multiple forwardings may be specified, and additional forwardings can be given on the command line. Privileged ports can be forwarded only when logging in as root on the remote machine. Unix domain socket paths may use the tokens described in the TOKENS section and environment variables as described in the ENVIRONMENT VARIABLES section.
If the port argument is 0, the listen port will be dynamically allocated on the server and reported to the client at run time.
If the bind_address is not specified,
        the default is to only bind to loopback addresses. If the
        bind_address is
        ‘*’ or an empty string, then the
        forwarding is requested to listen on all interfaces. Specifying a remote
        bind_address will only succeed if the server's
        GatewayPorts option is enabled (see
        sshd_config(5)).
RequestTTYno (never request a TTY),
      yes (always request a TTY when standard input is a
      TTY), force (always request a TTY) or
      auto (request a TTY when opening a login session).
      This option mirrors the -t and
      -T flags for
      ssh(1).RequiredRSASize1024 bits. Note that
      this limit may only be raised from the default.RevokedHostKeysRevokedHostKeys may use the tilde syntax to
      refer to a user's home directory, the tokens described in the
      TOKENS section and environment variables
      as described in the
      ENVIRONMENT VARIABLES
      section.SecurityKeyProviderIf the specified value begins with a ‘$’ character, then it will be treated as an environment variable containing the path to the library.
SendEnvTERM environment variable is always sent whenever
      a pseudo-terminal is requested as it is required by the protocol. Refer to
      AcceptEnv in
      sshd_config(5) for how
      to configure the server. Variables are specified by name, which may
      contain wildcard characters. Multiple environment variables may be
      separated by whitespace or spread across multiple
      SendEnv directives.
    See PATTERNS for more information on patterns.
It is possible to clear previously set
        SendEnv variable names by prefixing patterns
        with -. The default is not to send any
        environment variables.
ServerAliveCountMaxTCPKeepAlive
      (below). The server alive messages are sent through the encrypted channel
      and therefore will not be spoofable. The TCP keepalive option enabled by
      TCPKeepAlive is spoofable. The server alive
      mechanism is valuable when the client or server depend on knowing when a
      connection has become unresponsive.
    The default value is 3. If, for example,
        ServerAliveInterval (see below) is set to 15 and
        ServerAliveCountMax is left at the default, if
        the server becomes unresponsive, ssh will disconnect after approximately
        45 seconds.
ServerAliveIntervalSessionTypenone (same as the -N
      option), subsystem (same as the
      -s option) or default
      (shell or command execution).SetEnvSendEnv, with
      the exception of the TERM variable, the server
      must be prepared to accept the environment variable.StdinNull-n option must be used when
      ssh is run in the background. The argument to this
      keyword must be yes (same as the
      -n option) or no (the
      default).StreamLocalBindMaskThe default value is 0177, which creates a Unix-domain socket file that is readable and writable only by the owner. Note that not all operating systems honor the file mode on Unix-domain socket files.
StreamLocalBindUnlinkStreamLocalBindUnlink is not
      enabled, ssh will be unable to forward the port to
      the Unix-domain socket file. This option is only used for port forwarding
      to a Unix-domain socket file.
    The argument must be yes or
        no (the default).
StrictHostKeyCheckingyes,
      ssh(1) will never automatically
      add host keys to the ~/.ssh/known_hosts file, and
      refuses to connect to hosts whose host key has changed. This provides
      maximum protection against man-in-the-middle (MITM) attacks, though it can
      be annoying when the /etc/ssh/ssh_known_hosts file
      is poorly maintained or when connections to new hosts are frequently made.
      This option forces the user to manually add all new hosts.
    If this flag is set to accept-new then
        ssh will automatically add new host keys to the user's
        known_hosts file, but will not permit
        connections to hosts with changed host keys. If this flag is set to
        no or off, ssh will
        automatically add new host keys to the user known hosts files and allow
        connections to hosts with changed hostkeys to proceed, subject to some
        restrictions. If this flag is set to ask (the
        default), new host keys will be added to the user known host files only
        after the user has confirmed that is what they really want to do, and
        ssh will refuse to connect to hosts whose host key has changed. The host
        keys of known hosts will be verified automatically in all cases.
SyslogFacilityTCPKeepAliveThe default is yes (to send TCP
        keepalive messages), and the client will notice if the network goes down
        or the remote host dies. This is important in scripts, and many users
        want it too.
To disable TCP keepalive messages, the value should be set to
        no. See also
        ServerAliveInterval for protocol-level
        keepalives.
TagMatch directive to select a block of
      configuration.Tunnelyes, point-to-point (layer
      3), ethernet (layer 2), or
      no (the default). Specifying
      yes requests the default tunnel mode, which is
      point-to-point.TunnelDeviceThe argument must be
        local_tun[:remote_tun]. The
        devices may be specified by numerical ID or the keyword
        any, which uses the next available tunnel
        device. If remote_tun is not specified, it
        defaults to any. The default is
        any:any.
UpdateHostKeysUserKnownHostsFile. The argument must be
      yes, no or
      ask. This option allows learning alternate
      hostkeys for a server and supports graceful key rotation by allowing a
      server to send replacement public keys before old ones are removed.
    Additional hostkeys are only accepted if the key used to
        authenticate the host was already trusted or explicitly accepted by the
        user, the host was authenticated via
        UserKnownHostsFile (i.e. not
        GlobalKnownHostsFile) and the host was
        authenticated using a plain key and not a certificate.
UpdateHostKeys is enabled by default
        if the user has not overridden the default
        UserKnownHostsFile setting and has not enabled
        VerifyHostKeyDNS, otherwise
        UpdateHostKeys will be set to
        no.
If UpdateHostKeys is set to
        ask, then the user is asked to confirm the
        modifications to the known_hosts file. Confirmation is currently
        incompatible with ControlPersist, and will be
        disabled if it is enabled.
Presently, only sshd(8) from OpenSSH 6.8 and greater support the “hostkeys@openssh.com” protocol extension used to inform the client of all the server's hostkeys.
UserUserKnownHostsFilenone causes
      ssh(1) to ignore any
      user-specific known hosts files. The default is
      ~/.ssh/known_hosts,
      ~/.ssh/known_hosts2.VerifyHostKeyDNSyes, the client
      will implicitly trust keys that match a secure fingerprint from DNS.
      Insecure fingerprints will be handled as if this option was set to
      ask. If this option is set to
      ask, information on fingerprint match will be
      displayed, but the user will still need to confirm new host keys according
      to the StrictHostKeyChecking option. The default
      is no.
    See also VERIFYING HOST KEYS in ssh(1).
VisualHostKeyyes, an ASCII art
      representation of the remote host key fingerprint is printed in addition
      to the fingerprint string at login and for unknown host keys. If this flag
      is set to no (the default), no fingerprint strings
      are printed at login and only the fingerprint string will be printed for
      unknown host keys.XAuthLocationHost *.co.ukThe following pattern would match any host in the 192.168.0.[0-9] network range:
Host 192.168.0.?A pattern-list is a comma-separated list of patterns. Patterns within pattern-lists may be negated by preceding them with an exclamation mark (‘!’). For example, to allow a key to be used from anywhere within an organization except from the “dialup” pool, the following entry (in authorized_keys) could be used:
from="!*.dialup.example.com,*.example.com"Note that a negated match will never produce a positive result by itself. For example, attempting to match “host3” against the following pattern-list will fail:
from="!host1,!host2"The solution here is to include a term that will yield a positive match, such as a wildcard:
from="!host1,!host2,*"KnownHostsCommand execution: either
      ADDRESS when looking up a host by address (only
      when CheckHostIP is enabled),
      HOSTNAME when searching by hostname, or
      ORDER when preparing the host key algorithm
      preference list to use for the destination host.ssh-ed25519.CertificateFile,
    ControlPath, IdentityAgent,
    IdentityFile,
    KnownHostsCommand,
    LocalForward, Match exec,
    RemoteCommand,
    RemoteForward,
    RevokedHostKeys, and
    UserKnownHostsFile accept the tokens %%, %C, %d, %h,
    %i, %j, %k, %L, %l, %n, %p, %r, and %u.
KnownHostsCommand additionally accepts the
    tokens %f, %H, %I, %K and %t.
Hostname accepts the tokens %% and %h.
LocalCommand accepts all tokens.
ProxyCommand and
    ProxyJump accept the tokens %%, %h, %n, %p, and
  %r.
Note that some of these directives build commands for execution via the shell. Because ssh(1) performs no filtering or escaping of characters that have special meaning in shell commands (e.g. quotes), it is the user's responsibility to ensure that the arguments passed to ssh(1) do not contain such characters and that tokens are appropriately quoted when used.
${}, for example
  ${HOME}/.ssh would refer to the user's .ssh directory.
  If a specified environment variable does not exist then an error will be
  returned and the setting for that keyword will be ignored.
The keywords CertificateFile,
    ControlPath, IdentityAgent,
    IdentityFile,
    KnownHostsCommand, and
    UserKnownHostsFile support environment variables.
    The keywords LocalForward and
    RemoteForward support environment variables only for
    Unix domain socket paths.
| October 12 2023 | NetBSD 9.4 |