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.26 2003/11/21 11:57:03 djm 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 GSSAPIAuthentication 229Specifies whether user authentication based on GSSAPI is allowed. 230The default is 231.Dq no . 232Note that this option applies to protocol version 2 only. 233.It Cm GSSAPICleanupCredentials 234Specifies whether to automatically destroy the user's credentials cache 235on logout. 236The default is 237.Dq yes . 238Note that this option applies to protocol version 2 only. 239.It Cm HostbasedAuthentication 240Specifies whether rhosts or /etc/hosts.equiv authentication together 241with successful public key client host authentication is allowed 242(hostbased authentication). 243This option is similar to 244.Cm RhostsRSAAuthentication 245and applies to protocol version 2 only. 246The default is 247.Dq no . 248.It Cm HostKey 249Specifies a file containing a private host key 250used by SSH. 251The default is 252.Pa /etc/ssh/ssh_host_key 253for protocol version 1, and 254.Pa /etc/ssh/ssh_host_rsa_key 255and 256.Pa /etc/ssh/ssh_host_dsa_key 257for protocol version 2. 258Note that 259.Nm sshd 260will refuse to use a file if it is group/world-accessible. 261It is possible to have multiple host key files. 262.Dq rsa1 263keys are used for version 1 and 264.Dq dsa 265or 266.Dq rsa 267are used for version 2 of the SSH protocol. 268.It Cm IgnoreRhosts 269Specifies that 270.Pa .rhosts 271and 272.Pa .shosts 273files will not be used in 274.Cm RhostsRSAAuthentication 275or 276.Cm HostbasedAuthentication . 277.Pp 278.Pa /etc/hosts.equiv 279and 280.Pa /etc/shosts.equiv 281are still used. 282The default is 283.Dq yes . 284.It Cm IgnoreUserKnownHosts 285Specifies whether 286.Nm sshd 287should ignore the user's 288.Pa $HOME/.ssh/known_hosts 289during 290.Cm RhostsRSAAuthentication 291or 292.Cm HostbasedAuthentication . 293The default is 294.Dq no . 295.It Cm KeepAlive 296Specifies whether the system should send TCP keepalive messages to the 297other side. 298If they are sent, death of the connection or crash of one 299of the machines will be properly noticed. 300However, this means that 301connections will die if the route is down temporarily, and some people 302find it annoying. 303On the other hand, if keepalives are not sent, 304sessions may hang indefinitely on the server, leaving 305.Dq ghost 306users and consuming server resources. 307.Pp 308The default is 309.Dq yes 310(to send keepalives), and the server will notice 311if the network goes down or the client host crashes. 312This avoids infinitely hanging sessions. 313.Pp 314To disable keepalives, the value should be set to 315.Dq no . 316.It Cm KerberosAuthentication 317Specifies whether the password provided by the user for 318.Cm PasswordAuthentication 319will be validated through the Kerberos KDC. 320To use this option, the server needs a 321Kerberos servtab which allows the verification of the KDC's identity. 322Default is 323.Dq no . 324.It Cm KerberosOrLocalPasswd 325If set then if password authentication through Kerberos fails then 326the password will be validated via any additional local mechanism 327such as 328.Pa /etc/passwd . 329Default is 330.Dq yes . 331.It Cm KerberosTicketCleanup 332Specifies whether to automatically destroy the user's ticket cache 333file on logout. 334Default is 335.Dq yes . 336.It Cm KeyRegenerationInterval 337In protocol version 1, the ephemeral server key is automatically regenerated 338after this many seconds (if it has been used). 339The purpose of regeneration is to prevent 340decrypting captured sessions by later breaking into the machine and 341stealing the keys. 342The key is never stored anywhere. 343If the value is 0, the key is never regenerated. 344The default is 3600 (seconds). 345.It Cm ListenAddress 346Specifies the local addresses 347.Nm sshd 348should listen on. 349The following forms may be used: 350.Pp 351.Bl -item -offset indent -compact 352.It 353.Cm ListenAddress 354.Sm off 355.Ar host No | Ar IPv4_addr No | Ar IPv6_addr 356.Sm on 357.It 358.Cm ListenAddress 359.Sm off 360.Ar host No | Ar IPv4_addr No : Ar port 361.Sm on 362.It 363.Cm ListenAddress 364.Sm off 365.Oo 366.Ar host No | Ar IPv6_addr Oc : Ar port 367.Sm on 368.El 369.Pp 370If 371.Ar port 372is not specified, 373.Nm sshd 374will listen on the address and all prior 375.Cm Port 376options specified. 377The default is to listen on all local addresses. 378Multiple 379.Cm ListenAddress 380options are permitted. 381Additionally, any 382.Cm Port 383options must precede this option for non port qualified addresses. 384.It Cm LoginGraceTime 385The server disconnects after this time if the user has not 386successfully logged in. 387If the value is 0, there is no time limit. 388The default is 120 seconds. 389.It Cm LogLevel 390Gives the verbosity level that is used when logging messages from 391.Nm sshd . 392The possible values are: 393QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 and DEBUG3. 394The default is INFO. 395DEBUG and DEBUG1 are equivalent. 396DEBUG2 and DEBUG3 each specify higher levels of debugging output. 397Logging with a DEBUG level violates the privacy of users and is not recommended. 398.It Cm MACs 399Specifies the available MAC (message authentication code) algorithms. 400The MAC algorithm is used in protocol version 2 401for data integrity protection. 402Multiple algorithms must be comma-separated. 403The default is 404.Dq hmac-md5,hmac-sha1,hmac-ripemd160,hmac-sha1-96,hmac-md5-96 . 405.It Cm MaxStartups 406Specifies the maximum number of concurrent unauthenticated connections to the 407.Nm sshd 408daemon. 409Additional connections will be dropped until authentication succeeds or the 410.Cm LoginGraceTime 411expires for a connection. 412The default is 10. 413.Pp 414Alternatively, random early drop can be enabled by specifying 415the three colon separated values 416.Dq start:rate:full 417(e.g., "10:30:60"). 418.Nm sshd 419will refuse connection attempts with a probability of 420.Dq rate/100 421(30%) 422if there are currently 423.Dq start 424(10) 425unauthenticated connections. 426The probability increases linearly and all connection attempts 427are refused if the number of unauthenticated connections reaches 428.Dq full 429(60). 430.It Cm PasswordAuthentication 431Specifies whether password authentication is allowed. 432The default is 433.Dq yes . 434.It Cm PermitEmptyPasswords 435When password authentication is allowed, it specifies whether the 436server allows login to accounts with empty password strings. 437The default is 438.Dq no . 439.It Cm PermitRootLogin 440Specifies whether root can login using 441.Xr ssh 1 . 442The argument must be 443.Dq yes , 444.Dq without-password , 445.Dq forced-commands-only 446or 447.Dq no . 448The default is 449.Dq yes . 450.Pp 451If this option is set to 452.Dq without-password 453password authentication is disabled for root. 454.Pp 455If this option is set to 456.Dq forced-commands-only 457root login with public key authentication will be allowed, 458but only if the 459.Ar command 460option has been specified 461(which may be useful for taking remote backups even if root login is 462normally not allowed). 463All other authentication methods are disabled for root. 464.Pp 465If this option is set to 466.Dq no 467root is not allowed to login. 468.It Cm PermitUserEnvironment 469Specifies whether 470.Pa ~/.ssh/environment 471and 472.Cm environment= 473options in 474.Pa ~/.ssh/authorized_keys 475are processed by 476.Nm sshd . 477The default is 478.Dq no . 479Enabling environment processing may enable users to bypass access 480restrictions in some configurations using mechanisms such as 481.Ev LD_PRELOAD . 482.It Cm PidFile 483Specifies the file that contains the process ID of the 484.Nm sshd 485daemon. 486The default is 487.Pa /var/run/sshd.pid . 488.It Cm Port 489Specifies the port number that 490.Nm sshd 491listens on. 492The default is 22. 493Multiple options of this type are permitted. 494See also 495.Cm ListenAddress . 496.It Cm PrintLastLog 497Specifies whether 498.Nm sshd 499should print the date and time when the user last logged in. 500The default is 501.Dq yes . 502.It Cm PrintMotd 503Specifies whether 504.Nm sshd 505should print 506.Pa /etc/motd 507when a user logs in interactively. 508(On some systems it is also printed by the shell, 509.Pa /etc/profile , 510or equivalent.) 511The default is 512.Dq yes . 513.It Cm Protocol 514Specifies the protocol versions 515.Nm sshd 516supports. 517The possible values are 518.Dq 1 519and 520.Dq 2 . 521Multiple versions must be comma-separated. 522The default is 523.Dq 2,1 . 524Note that the order of the protocol list does not indicate preference, 525because the client selects among multiple protocol versions offered 526by the server. 527Specifying 528.Dq 2,1 529is identical to 530.Dq 1,2 . 531.It Cm PubkeyAuthentication 532Specifies whether public key authentication is allowed. 533The default is 534.Dq yes . 535Note that this option applies to protocol version 2 only. 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