1.\" -*- nroff -*- 2.\" 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 5.\" All rights reserved 6.\" 7.\" As far as I am concerned, the code I have written for this software 8.\" can be used freely for any purpose. Any derived versions of this 9.\" software must be clearly marked as such, and if the derived work is 10.\" incompatible with the protocol description in the RFC file, it must be 11.\" called by a name other than "ssh" or "Secure Shell". 12.\" 13.\" Copyright (c) 1999,2000 Markus Friedl. All rights reserved. 14.\" Copyright (c) 1999 Aaron Campbell. All rights reserved. 15.\" Copyright (c) 1999 Theo de Raadt. All rights reserved. 16.\" 17.\" Redistribution and use in source and binary forms, with or without 18.\" modification, are permitted provided that the following conditions 19.\" are met: 20.\" 1. Redistributions of source code must retain the above copyright 21.\" notice, this list of conditions and the following disclaimer. 22.\" 2. Redistributions in binary form must reproduce the above copyright 23.\" notice, this list of conditions and the following disclaimer in the 24.\" documentation and/or other materials provided with the distribution. 25.\" 26.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 27.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 28.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 29.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 30.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 31.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 35.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36.\" 37.\" $OpenBSD: sshd_config.5,v 1.21 2003/07/22 13:35:22 markus Exp $ 38.Dd September 25, 1999 39.Dt SSHD_CONFIG 5 40.Os 41.Sh NAME 42.Nm sshd_config 43.Nd OpenSSH SSH daemon configuration file 44.Sh SYNOPSIS 45.Bl -tag -width Ds -compact 46.It Pa /etc/ssh/sshd_config 47.El 48.Sh DESCRIPTION 49.Nm sshd 50reads configuration data from 51.Pa /etc/ssh/sshd_config 52(or the file specified with 53.Fl f 54on the command line). 55The file contains keyword-argument pairs, one per line. 56Lines starting with 57.Ql # 58and empty lines are interpreted as comments. 59.Pp 60The possible 61keywords and their meanings are as follows (note that 62keywords are case-insensitive and arguments are case-sensitive): 63.Bl -tag -width Ds 64.It Cm AllowGroups 65This keyword can be followed by a list of group name patterns, separated 66by spaces. 67If specified, login is allowed only for users whose primary 68group or supplementary group list matches one of the patterns. 69.Ql \&* 70and 71.Ql \&? 72can be used as 73wildcards in the patterns. 74Only group names are valid; a numerical group ID is not recognized. 75By default, login is allowed for all groups. 76.Pp 77.It Cm AllowTcpForwarding 78Specifies whether TCP forwarding is permitted. 79The default is 80.Dq yes . 81Note that disabling TCP forwarding does not improve security unless 82users are also denied shell access, as they can always install their 83own forwarders. 84.Pp 85.It Cm AllowUsers 86This keyword can be followed by a list of user name patterns, separated 87by spaces. 88If specified, login is allowed only for user names that 89match one of the patterns. 90.Ql \&* 91and 92.Ql \&? 93can be used as 94wildcards in the patterns. 95Only user names are valid; a numerical user ID is not recognized. 96By default, login is allowed for all users. 97If the pattern takes the form USER@HOST then USER and HOST 98are separately checked, restricting logins to particular 99users from particular hosts. 100.Pp 101.It Cm AuthorizedKeysFile 102Specifies the file that contains the public keys that can be used 103for user authentication. 104.Cm AuthorizedKeysFile 105may contain tokens of the form %T which are substituted during connection 106set-up. 107The following tokens are defined: %% is replaced by a literal '%', 108%h is replaced by the home directory of the user being authenticated and 109%u is replaced by the username of that user. 110After expansion, 111.Cm AuthorizedKeysFile 112is taken to be an absolute path or one relative to the user's home 113directory. 114The default is 115.Dq .ssh/authorized_keys . 116.It Cm Banner 117In some jurisdictions, sending a warning message before authentication 118may be relevant for getting legal protection. 119The contents of the specified file are sent to the remote user before 120authentication is allowed. 121This option is only available for protocol version 2. 122By default, no banner is displayed. 123.Pp 124.It Cm ChallengeResponseAuthentication 125Specifies whether challenge response authentication is allowed. 126All authentication styles from 127.Xr login.conf 5 128are supported. 129The default is 130.Dq yes . 131.It Cm Ciphers 132Specifies the ciphers allowed for protocol version 2. 133Multiple ciphers must be comma-separated. 134The default is 135.Pp 136.Bd -literal 137 ``aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour, 138 aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr'' 139.Ed 140.It Cm ClientAliveInterval 141Sets a timeout interval in seconds after which if no data has been received 142from the client, 143.Nm sshd 144will send a message through the encrypted 145channel to request a response from the client. 146The default 147is 0, indicating that these messages will not be sent to the client. 148This option applies to protocol version 2 only. 149.It Cm ClientAliveCountMax 150Sets the number of client alive messages (see above) which may be 151sent without 152.Nm sshd 153receiving any messages back from the client. 154If this threshold is reached while client alive messages are being sent, 155.Nm sshd 156will disconnect the client, terminating the session. 157It is important to note that the use of client alive messages is very 158different from 159.Cm KeepAlive 160(below). 161The client alive messages are sent through the encrypted channel 162and therefore will not be spoofable. 163The TCP keepalive option enabled by 164.Cm KeepAlive 165is spoofable. 166The client alive mechanism is valuable when the client or 167server depend on knowing when a connection has become inactive. 168.Pp 169The default value is 3. 170If 171.Cm ClientAliveInterval 172(above) is set to 15, and 173.Cm ClientAliveCountMax 174is left at the default, unresponsive ssh clients 175will be disconnected after approximately 45 seconds. 176.It Cm Compression 177Specifies whether compression is allowed. 178The argument must be 179.Dq yes 180or 181.Dq no . 182The default is 183.Dq yes . 184.It Cm DenyGroups 185This keyword can be followed by a list of group name patterns, separated 186by spaces. 187Login is disallowed for users whose primary group or supplementary 188group list matches one of the patterns. 189.Ql \&* 190and 191.Ql \&? 192can be used as 193wildcards in the patterns. 194Only group names are valid; a numerical group ID is not recognized. 195By default, login is allowed for all groups. 196.Pp 197.It Cm DenyUsers 198This keyword can be followed by a list of user name patterns, separated 199by spaces. 200Login is disallowed for user names that match one of the patterns. 201.Ql \&* 202and 203.Ql \&? 204can be used as wildcards in the patterns. 205Only user names are valid; a numerical user ID is not recognized. 206By default, login is allowed for all users. 207If the pattern takes the form USER@HOST then USER and HOST 208are separately checked, restricting logins to particular 209users from particular hosts. 210.It Cm GatewayPorts 211Specifies whether remote hosts are allowed to connect to ports 212forwarded for the client. 213By default, 214.Nm sshd 215binds remote port forwardings to the loopback address. 216This prevents other remote hosts from connecting to forwarded ports. 217.Cm GatewayPorts 218can be used to specify that 219.Nm sshd 220should bind remote port forwardings to the wildcard address, 221thus allowing remote hosts to connect to forwarded ports. 222The argument must be 223.Dq yes 224or 225.Dq no . 226The default is 227.Dq no . 228.It Cm HostbasedAuthentication 229Specifies whether rhosts or /etc/hosts.equiv authentication together 230with successful public key client host authentication is allowed 231(hostbased authentication). 232This option is similar to 233.Cm RhostsRSAAuthentication 234and applies to protocol version 2 only. 235The default is 236.Dq no . 237.It Cm HostKey 238Specifies a file containing a private host key 239used by SSH. 240The default is 241.Pa /etc/ssh/ssh_host_key 242for protocol version 1, and 243.Pa /etc/ssh/ssh_host_rsa_key 244and 245.Pa /etc/ssh/ssh_host_dsa_key 246for protocol version 2. 247Note that 248.Nm sshd 249will refuse to use a file if it is group/world-accessible. 250It is possible to have multiple host key files. 251.Dq rsa1 252keys are used for version 1 and 253.Dq dsa 254or 255.Dq rsa 256are used for version 2 of the SSH protocol. 257.It Cm IgnoreRhosts 258Specifies that 259.Pa .rhosts 260and 261.Pa .shosts 262files will not be used in 263.Cm RhostsAuthentication , 264.Cm RhostsRSAAuthentication 265or 266.Cm HostbasedAuthentication . 267.Pp 268.Pa /etc/hosts.equiv 269and 270.Pa /etc/shosts.equiv 271are still used. 272The default is 273.Dq yes . 274.It Cm IgnoreUserKnownHosts 275Specifies whether 276.Nm sshd 277should ignore the user's 278.Pa $HOME/.ssh/known_hosts 279during 280.Cm RhostsRSAAuthentication 281or 282.Cm HostbasedAuthentication . 283The default is 284.Dq no . 285.It Cm KeepAlive 286Specifies whether the system should send TCP keepalive messages to the 287other side. 288If they are sent, death of the connection or crash of one 289of the machines will be properly noticed. 290However, this means that 291connections will die if the route is down temporarily, and some people 292find it annoying. 293On the other hand, if keepalives are not sent, 294sessions may hang indefinitely on the server, leaving 295.Dq ghost 296users and consuming server resources. 297.Pp 298The default is 299.Dq yes 300(to send keepalives), and the server will notice 301if the network goes down or the client host crashes. 302This avoids infinitely hanging sessions. 303.Pp 304To disable keepalives, the value should be set to 305.Dq no . 306.It Cm KerberosAuthentication 307Specifies whether Kerberos authentication is allowed. 308This can be in the form of a Kerberos ticket, or if 309.Cm PasswordAuthentication 310is yes, the password provided by the user will be validated through 311the Kerberos KDC. 312To use this option, the server needs a 313Kerberos servtab which allows the verification of the KDC's identity. 314Default is 315.Dq no . 316.It Cm KerberosOrLocalPasswd 317If set then if password authentication through Kerberos fails then 318the password will be validated via any additional local mechanism 319such as 320.Pa /etc/passwd . 321Default is 322.Dq yes . 323.It Cm KerberosTgtPassing 324Specifies whether a Kerberos TGT may be forwarded to the server. 325Default is 326.Dq no . 327.It Cm KerberosTicketCleanup 328Specifies whether to automatically destroy the user's ticket cache 329file on logout. 330Default is 331.Dq yes . 332.It Cm KeyRegenerationInterval 333In protocol version 1, the ephemeral server key is automatically regenerated 334after this many seconds (if it has been used). 335The purpose of regeneration is to prevent 336decrypting captured sessions by later breaking into the machine and 337stealing the keys. 338The key is never stored anywhere. 339If the value is 0, the key is never regenerated. 340The default is 3600 (seconds). 341.It Cm ListenAddress 342Specifies the local addresses 343.Nm sshd 344should listen on. 345The following forms may be used: 346.Pp 347.Bl -item -offset indent -compact 348.It 349.Cm ListenAddress 350.Sm off 351.Ar host No | Ar IPv4_addr No | Ar IPv6_addr 352.Sm on 353.It 354.Cm ListenAddress 355.Sm off 356.Ar host No | Ar IPv4_addr No : Ar port 357.Sm on 358.It 359.Cm ListenAddress 360.Sm off 361.Oo 362.Ar host No | Ar IPv6_addr Oc : Ar port 363.Sm on 364.El 365.Pp 366If 367.Ar port 368is not specified, 369.Nm sshd 370will listen on the address and all prior 371.Cm Port 372options specified. 373The default is to listen on all local addresses. 374Multiple 375.Cm ListenAddress 376options are permitted. 377Additionally, any 378.Cm Port 379options must precede this option for non port qualified addresses. 380.It Cm LoginGraceTime 381The server disconnects after this time if the user has not 382successfully logged in. 383If the value is 0, there is no time limit. 384The default is 120 seconds. 385.It Cm LogLevel 386Gives the verbosity level that is used when logging messages from 387.Nm sshd . 388The possible values are: 389QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 and DEBUG3. 390The default is INFO. 391DEBUG and DEBUG1 are equivalent. 392DEBUG2 and DEBUG3 each specify higher levels of debugging output. 393Logging with a DEBUG level violates the privacy of users and is not recommended. 394.It Cm MACs 395Specifies the available MAC (message authentication code) algorithms. 396The MAC algorithm is used in protocol version 2 397for data integrity protection. 398Multiple algorithms must be comma-separated. 399The default is 400.Dq hmac-md5,hmac-sha1,hmac-ripemd160,hmac-sha1-96,hmac-md5-96 . 401.It Cm MaxStartups 402Specifies the maximum number of concurrent unauthenticated connections to the 403.Nm sshd 404daemon. 405Additional connections will be dropped until authentication succeeds or the 406.Cm LoginGraceTime 407expires for a connection. 408The default is 10. 409.Pp 410Alternatively, random early drop can be enabled by specifying 411the three colon separated values 412.Dq start:rate:full 413(e.g., "10:30:60"). 414.Nm sshd 415will refuse connection attempts with a probability of 416.Dq rate/100 417(30%) 418if there are currently 419.Dq start 420(10) 421unauthenticated connections. 422The probability increases linearly and all connection attempts 423are refused if the number of unauthenticated connections reaches 424.Dq full 425(60). 426.It Cm PasswordAuthentication 427Specifies whether password authentication is allowed. 428The default is 429.Dq yes . 430.It Cm PermitEmptyPasswords 431When password authentication is allowed, it specifies whether the 432server allows login to accounts with empty password strings. 433The default is 434.Dq no . 435.It Cm PermitRootLogin 436Specifies whether root can login using 437.Xr ssh 1 . 438The argument must be 439.Dq yes , 440.Dq without-password , 441.Dq forced-commands-only 442or 443.Dq no . 444The default is 445.Dq yes . 446.Pp 447If this option is set to 448.Dq without-password 449password authentication is disabled for root. 450.Pp 451If this option is set to 452.Dq forced-commands-only 453root login with public key authentication will be allowed, 454but only if the 455.Ar command 456option has been specified 457(which may be useful for taking remote backups even if root login is 458normally not allowed). 459All other authentication methods are disabled for root. 460.Pp 461If this option is set to 462.Dq no 463root is not allowed to login. 464.It Cm PermitUserEnvironment 465Specifies whether 466.Pa ~/.ssh/environment 467and 468.Cm environment= 469options in 470.Pa ~/.ssh/authorized_keys 471are processed by 472.Nm sshd . 473The default is 474.Dq no . 475Enabling environment processing may enable users to bypass access 476restrictions in some configurations using mechanisms such as 477.Ev LD_PRELOAD . 478.It Cm PidFile 479Specifies the file that contains the process ID of the 480.Nm sshd 481daemon. 482The default is 483.Pa /var/run/sshd.pid . 484.It Cm Port 485Specifies the port number that 486.Nm sshd 487listens on. 488The default is 22. 489Multiple options of this type are permitted. 490See also 491.Cm ListenAddress . 492.It Cm PrintLastLog 493Specifies whether 494.Nm sshd 495should print the date and time when the user last logged in. 496The default is 497.Dq yes . 498.It Cm PrintMotd 499Specifies whether 500.Nm sshd 501should print 502.Pa /etc/motd 503when a user logs in interactively. 504(On some systems it is also printed by the shell, 505.Pa /etc/profile , 506or equivalent.) 507The default is 508.Dq yes . 509.It Cm Protocol 510Specifies the protocol versions 511.Nm sshd 512supports. 513The possible values are 514.Dq 1 515and 516.Dq 2 . 517Multiple versions must be comma-separated. 518The default is 519.Dq 2,1 . 520Note that the order of the protocol list does not indicate preference, 521because the client selects among multiple protocol versions offered 522by the server. 523Specifying 524.Dq 2,1 525is identical to 526.Dq 1,2 . 527.It Cm PubkeyAuthentication 528Specifies whether public key authentication is allowed. 529The default is 530.Dq yes . 531Note that this option applies to protocol version 2 only. 532.It Cm RhostsAuthentication 533Specifies whether authentication using rhosts or /etc/hosts.equiv 534files is sufficient. 535Normally, this method should not be permitted because it is insecure. 536.Cm RhostsRSAAuthentication 537should be used 538instead, because it performs RSA-based host authentication in addition 539to normal rhosts or /etc/hosts.equiv authentication. 540The default is 541.Dq no . 542This option applies to protocol version 1 only. 543.It Cm RhostsRSAAuthentication 544Specifies whether rhosts or /etc/hosts.equiv authentication together 545with successful RSA host authentication is allowed. 546The default is 547.Dq no . 548This option applies to protocol version 1 only. 549.It Cm RSAAuthentication 550Specifies whether pure RSA authentication is allowed. 551The default is 552.Dq yes . 553This option applies to protocol version 1 only. 554.It Cm ServerKeyBits 555Defines the number of bits in the ephemeral protocol version 1 server key. 556The minimum value is 512, and the default is 768. 557.It Cm StrictModes 558Specifies whether 559.Nm sshd 560should check file modes and ownership of the 561user's files and home directory before accepting login. 562This is normally desirable because novices sometimes accidentally leave their 563directory or files world-writable. 564The default is 565.Dq yes . 566.It Cm Subsystem 567Configures an external subsystem (e.g., file transfer daemon). 568Arguments should be a subsystem name and a command to execute upon subsystem 569request. 570The command 571.Xr sftp-server 8 572implements the 573.Dq sftp 574file transfer subsystem. 575By default no subsystems are defined. 576Note that this option applies to protocol version 2 only. 577.It Cm SyslogFacility 578Gives the facility code that is used when logging messages from 579.Nm sshd . 580The possible values are: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, 581LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. 582The default is AUTH. 583.It Cm UseDNS 584Specifies whether 585.Nm sshd 586should lookup the remote host name and check that 587the resolved host name for the remote IP address maps back to the 588very same IP address. 589The default is 590.Dq yes . 591.It Cm UseLogin 592Specifies whether 593.Xr login 1 594is used for interactive login sessions. 595The default is 596.Dq no . 597Note that 598.Xr login 1 599is never used for remote command execution. 600Note also, that if this is enabled, 601.Cm X11Forwarding 602will be disabled because 603.Xr login 1 604does not know how to handle 605.Xr xauth 1 606cookies. 607If 608.Cm UsePrivilegeSeparation 609is specified, it will be disabled after authentication. 610.It Cm UsePrivilegeSeparation 611Specifies whether 612.Nm sshd 613separates privileges by creating an unprivileged child process 614to deal with incoming network traffic. 615After successful authentication, another process will be created that has 616the privilege of the authenticated user. 617The goal of privilege separation is to prevent privilege 618escalation by containing any corruption within the unprivileged processes. 619The default is 620.Dq yes . 621.It Cm X11DisplayOffset 622Specifies the first display number available for 623.Nm sshd Ns 's 624X11 forwarding. 625This prevents 626.Nm sshd 627from interfering with real X11 servers. 628The default is 10. 629.It Cm X11Forwarding 630Specifies whether X11 forwarding is permitted. 631The argument must be 632.Dq yes 633or 634.Dq no . 635The default is 636.Dq no . 637.Pp 638When X11 forwarding is enabled, there may be additional exposure to 639the server and to client displays if the 640.Nm sshd 641proxy display is configured to listen on the wildcard address (see 642.Cm X11UseLocalhost 643below), however this is not the default. 644Additionally, the authentication spoofing and authentication data 645verification and substitution occur on the client side. 646The security risk of using X11 forwarding is that the client's X11 647display server may be exposed to attack when the ssh client requests 648forwarding (see the warnings for 649.Cm ForwardX11 650in 651.Xr ssh_config 5 ) . 652A system administrator may have a stance in which they want to 653protect clients that may expose themselves to attack by unwittingly 654requesting X11 forwarding, which can warrant a 655.Dq no 656setting. 657.Pp 658Note that disabling X11 forwarding does not prevent users from 659forwarding X11 traffic, as users can always install their own forwarders. 660X11 forwarding is automatically disabled if 661.Cm UseLogin 662is enabled. 663.It Cm X11UseLocalhost 664Specifies whether 665.Nm sshd 666should bind the X11 forwarding server to the loopback address or to 667the wildcard address. 668By default, 669.Nm sshd 670binds the forwarding server to the loopback address and sets the 671hostname part of the 672.Ev DISPLAY 673environment variable to 674.Dq localhost . 675This prevents remote hosts from connecting to the proxy display. 676However, some older X11 clients may not function with this 677configuration. 678.Cm X11UseLocalhost 679may be set to 680.Dq no 681to specify that the forwarding server should be bound to the wildcard 682address. 683The argument must be 684.Dq yes 685or 686.Dq no . 687The default is 688.Dq yes . 689.It Cm XAuthLocation 690Specifies the full pathname of the 691.Xr xauth 1 692program. 693The default is 694.Pa /usr/X11R6/bin/xauth . 695.El 696.Ss Time Formats 697.Nm sshd 698command-line arguments and configuration file options that specify time 699may be expressed using a sequence of the form: 700.Sm off 701.Ar time Op Ar qualifier , 702.Sm on 703where 704.Ar time 705is a positive integer value and 706.Ar qualifier 707is one of the following: 708.Pp 709.Bl -tag -width Ds -compact -offset indent 710.It Cm <none> 711seconds 712.It Cm s | Cm S 713seconds 714.It Cm m | Cm M 715minutes 716.It Cm h | Cm H 717hours 718.It Cm d | Cm D 719days 720.It Cm w | Cm W 721weeks 722.El 723.Pp 724Each member of the sequence is added together to calculate 725the total time value. 726.Pp 727Time format examples: 728.Pp 729.Bl -tag -width Ds -compact -offset indent 730.It 600 731600 seconds (10 minutes) 732.It 10m 73310 minutes 734.It 1h30m 7351 hour 30 minutes (90 minutes) 736.El 737.Sh FILES 738.Bl -tag -width Ds 739.It Pa /etc/ssh/sshd_config 740Contains configuration data for 741.Nm sshd . 742This file should be writable by root only, but it is recommended 743(though not necessary) that it be world-readable. 744.El 745.Sh SEE ALSO 746.Xr sshd 8 747.Sh AUTHORS 748OpenSSH is a derivative of the original and free 749ssh 1.2.12 release by Tatu Ylonen. 750Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, 751Theo de Raadt and Dug Song 752removed many bugs, re-added newer features and 753created OpenSSH. 754Markus Friedl contributed the support for SSH 755protocol versions 1.5 and 2.0. 756Niels Provos and Markus Friedl contributed support 757for privilege separation. 758