Annotation of src/usr.bin/ssh/ssh_config.5, Revision 1.16
1.1 stevesk 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: .\"
1.16 ! markus 37: .\" $OpenBSD: ssh_config.5,v 1.15 2003/07/02 14:51:16 markus Exp $
1.1 stevesk 38: .Dd September 25, 1999
39: .Dt SSH_CONFIG 5
40: .Os
41: .Sh NAME
42: .Nm ssh_config
43: .Nd OpenSSH SSH client configuration files
44: .Sh SYNOPSIS
45: .Bl -tag -width Ds -compact
46: .It Pa $HOME/.ssh/config
47: .It Pa /etc/ssh/ssh_config
48: .El
49: .Sh DESCRIPTION
50: .Nm ssh
51: obtains configuration data from the following sources in
52: the following order:
1.2 stevesk 53: .Bl -enum -offset indent -compact
54: .It
55: command-line options
56: .It
57: user's configuration file
58: .Pq Pa $HOME/.ssh/config
59: .It
60: system-wide configuration file
61: .Pq Pa /etc/ssh/ssh_config
62: .El
1.1 stevesk 63: .Pp
64: For each parameter, the first obtained value
65: will be used.
66: The configuration files contain sections bracketed by
67: .Dq Host
68: specifications, and that section is only applied for hosts that
69: match one of the patterns given in the specification.
70: The matched host name is the one given on the command line.
71: .Pp
72: Since the first obtained value for each parameter is used, more
73: host-specific declarations should be given near the beginning of the
74: file, and general defaults at the end.
75: .Pp
76: The configuration file has the following format:
77: .Pp
78: Empty lines and lines starting with
79: .Ql #
80: are comments.
81: .Pp
82: Otherwise a line is of the format
83: .Dq keyword arguments .
84: Configuration options may be separated by whitespace or
85: optional whitespace and exactly one
86: .Ql = ;
87: the latter format is useful to avoid the need to quote whitespace
88: when specifying configuration options using the
89: .Nm ssh ,
90: .Nm scp
91: and
92: .Nm sftp
93: .Fl o
94: option.
95: .Pp
96: The possible
97: keywords and their meanings are as follows (note that
98: keywords are case-insensitive and arguments are case-sensitive):
99: .Bl -tag -width Ds
100: .It Cm Host
101: Restricts the following declarations (up to the next
102: .Cm Host
103: keyword) to be only for those hosts that match one of the patterns
104: given after the keyword.
105: .Ql \&*
106: and
107: .Ql ?
108: can be used as wildcards in the
109: patterns.
110: A single
111: .Ql \&*
112: as a pattern can be used to provide global
113: defaults for all hosts.
114: The host is the
115: .Ar hostname
116: argument given on the command line (i.e., the name is not converted to
117: a canonicalized host name before matching).
1.10 djm 118: .It Cm AddressFamily
1.11 jmc 119: Specifies which address family to use when connecting.
120: Valid arguments are
1.10 djm 121: .Dq any ,
122: .Dq inet
123: (Use IPv4 only) or
124: .Dq inet6
125: (Use IPv6 only.)
1.1 stevesk 126: .It Cm BatchMode
127: If set to
128: .Dq yes ,
129: passphrase/password querying will be disabled.
130: This option is useful in scripts and other batch jobs where no user
131: is present to supply the password.
132: The argument must be
133: .Dq yes
134: or
135: .Dq no .
136: The default is
137: .Dq no .
138: .It Cm BindAddress
139: Specify the interface to transmit from on machines with multiple
140: interfaces or aliased addresses.
141: Note that this option does not work if
142: .Cm UsePrivilegedPort
143: is set to
144: .Dq yes .
145: .It Cm ChallengeResponseAuthentication
146: Specifies whether to use challenge response authentication.
147: The argument to this keyword must be
148: .Dq yes
149: or
150: .Dq no .
151: The default is
152: .Dq yes .
153: .It Cm CheckHostIP
154: If this flag is set to
155: .Dq yes ,
156: ssh will additionally check the host IP address in the
157: .Pa known_hosts
158: file.
159: This allows ssh to detect if a host key changed due to DNS spoofing.
160: If the option is set to
161: .Dq no ,
162: the check will not be executed.
163: The default is
164: .Dq yes .
165: .It Cm Cipher
166: Specifies the cipher to use for encrypting the session
167: in protocol version 1.
168: Currently,
169: .Dq blowfish ,
170: .Dq 3des ,
171: and
172: .Dq des
173: are supported.
174: .Ar des
175: is only supported in the
176: .Nm ssh
177: client for interoperability with legacy protocol 1 implementations
178: that do not support the
179: .Ar 3des
1.7 jmc 180: cipher.
181: Its use is strongly discouraged due to cryptographic weaknesses.
1.1 stevesk 182: The default is
183: .Dq 3des .
184: .It Cm Ciphers
185: Specifies the ciphers allowed for protocol version 2
186: in order of preference.
187: Multiple ciphers must be comma-separated.
188: The default is
189: .Pp
190: .Bd -literal
191: ``aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,
192: aes192-cbc,aes256-cbc''
193: .Ed
194: .It Cm ClearAllForwardings
195: Specifies that all local, remote and dynamic port forwardings
196: specified in the configuration files or on the command line be
1.7 jmc 197: cleared.
198: This option is primarily useful when used from the
1.1 stevesk 199: .Nm ssh
200: command line to clear port forwardings set in
201: configuration files, and is automatically set by
202: .Xr scp 1
203: and
204: .Xr sftp 1 .
205: The argument must be
206: .Dq yes
207: or
208: .Dq no .
209: The default is
210: .Dq no .
211: .It Cm Compression
212: Specifies whether to use compression.
213: The argument must be
214: .Dq yes
215: or
216: .Dq no .
217: The default is
218: .Dq no .
219: .It Cm CompressionLevel
220: Specifies the compression level to use if compression is enabled.
221: The argument must be an integer from 1 (fast) to 9 (slow, best).
222: The default level is 6, which is good for most applications.
223: The meaning of the values is the same as in
224: .Xr gzip 1 .
225: Note that this option applies to protocol version 1 only.
226: .It Cm ConnectionAttempts
227: Specifies the number of tries (one per second) to make before exiting.
228: The argument must be an integer.
229: This may be useful in scripts if the connection sometimes fails.
230: The default is 1.
1.9 djm 231: .It Cm ConnectTimeout
232: Specifies the timeout (in seconds) used when connecting to the ssh
1.11 jmc 233: server, instead of using the default system TCP timeout.
234: This value is used only when the target is down or really unreachable,
235: not when it refuses the connection.
1.1 stevesk 236: .It Cm DynamicForward
237: Specifies that a TCP/IP port on the local machine be forwarded
238: over the secure channel, and the application
239: protocol is then used to determine where to connect to from the
1.7 jmc 240: remote machine.
241: The argument must be a port number.
1.15 markus 242: Currently the SOCKS4 and SOCKS5 protocols are supported, and
1.1 stevesk 243: .Nm ssh
1.15 markus 244: will act as a SOCKS server.
1.1 stevesk 245: Multiple forwardings may be specified, and
1.7 jmc 246: additional forwardings can be given on the command line.
247: Only the superuser can forward privileged ports.
1.14 markus 248: .It Cm EnableSSHKeysign
249: Setting this option to
250: .Dq yes
251: in the global client configuration file
252: .Pa /etc/ssh/ssh_config
253: enables the use of the helper program
254: .Xr ssh-keysign 8
255: during
256: .Cm HostbasedAuthentication .
257: The argument must be
258: .Dq yes
259: or
260: .Dq no .
261: The default is
262: .Dq no .
263: See
264: .Xr ssh-keysign 8
265: for more information.
1.1 stevesk 266: .It Cm EscapeChar
267: Sets the escape character (default:
268: .Ql ~ ) .
269: The escape character can also
270: be set on the command line.
271: The argument should be a single character,
272: .Ql ^
273: followed by a letter, or
274: .Dq none
275: to disable the escape
276: character entirely (making the connection transparent for binary
277: data).
278: .It Cm ForwardAgent
279: Specifies whether the connection to the authentication agent (if any)
280: will be forwarded to the remote machine.
281: The argument must be
282: .Dq yes
283: or
284: .Dq no .
285: The default is
286: .Dq no .
1.3 stevesk 287: .Pp
1.7 jmc 288: Agent forwarding should be enabled with caution.
289: Users with the ability to bypass file permissions on the remote host
290: (for the agent's Unix-domain socket)
291: can access the local agent through the forwarded connection.
292: An attacker cannot obtain key material from the agent,
1.3 stevesk 293: however they can perform operations on the keys that enable them to
294: authenticate using the identities loaded into the agent.
1.1 stevesk 295: .It Cm ForwardX11
296: Specifies whether X11 connections will be automatically redirected
297: over the secure channel and
298: .Ev DISPLAY
299: set.
300: The argument must be
301: .Dq yes
302: or
303: .Dq no .
304: The default is
305: .Dq no .
1.3 stevesk 306: .Pp
1.7 jmc 307: X11 forwarding should be enabled with caution.
308: Users with the ability to bypass file permissions on the remote host
309: (for the user's X authorization database)
310: can access the local X11 display through the forwarded connection.
311: An attacker may then be able to perform activities such as keystroke monitoring.
1.1 stevesk 312: .It Cm GatewayPorts
313: Specifies whether remote hosts are allowed to connect to local
314: forwarded ports.
315: By default,
316: .Nm ssh
1.7 jmc 317: binds local port forwardings to the loopback address.
318: This prevents other remote hosts from connecting to forwarded ports.
1.1 stevesk 319: .Cm GatewayPorts
320: can be used to specify that
321: .Nm ssh
322: should bind local port forwardings to the wildcard address,
323: thus allowing remote hosts to connect to forwarded ports.
324: The argument must be
325: .Dq yes
326: or
327: .Dq no .
328: The default is
329: .Dq no .
330: .It Cm GlobalKnownHostsFile
331: Specifies a file to use for the global
332: host key database instead of
333: .Pa /etc/ssh/ssh_known_hosts .
334: .It Cm HostbasedAuthentication
335: Specifies whether to try rhosts based authentication with public key
336: authentication.
337: The argument must be
338: .Dq yes
339: or
340: .Dq no .
341: The default is
342: .Dq no .
343: This option applies to protocol version 2 only and
344: is similar to
345: .Cm RhostsRSAAuthentication .
346: .It Cm HostKeyAlgorithms
347: Specifies the protocol version 2 host key algorithms
348: that the client wants to use in order of preference.
349: The default for this option is:
350: .Dq ssh-rsa,ssh-dss .
351: .It Cm HostKeyAlias
352: Specifies an alias that should be used instead of the
353: real host name when looking up or saving the host key
354: in the host key database files.
355: This option is useful for tunneling ssh connections
356: or for multiple servers running on a single host.
357: .It Cm HostName
358: Specifies the real host name to log into.
359: This can be used to specify nicknames or abbreviations for hosts.
360: Default is the name given on the command line.
361: Numeric IP addresses are also permitted (both on the command line and in
362: .Cm HostName
363: specifications).
364: .It Cm IdentityFile
365: Specifies a file from which the user's RSA or DSA authentication identity
1.11 jmc 366: is read.
367: The default is
1.1 stevesk 368: .Pa $HOME/.ssh/identity
369: for protocol version 1, and
370: .Pa $HOME/.ssh/id_rsa
371: and
372: .Pa $HOME/.ssh/id_dsa
373: for protocol version 2.
374: Additionally, any identities represented by the authentication agent
375: will be used for authentication.
376: The file name may use the tilde
377: syntax to refer to a user's home directory.
378: It is possible to have
379: multiple identity files specified in configuration files; all these
380: identities will be tried in sequence.
381: .It Cm KeepAlive
382: Specifies whether the system should send TCP keepalive messages to the
383: other side.
384: If they are sent, death of the connection or crash of one
385: of the machines will be properly noticed.
386: However, this means that
387: connections will die if the route is down temporarily, and some people
388: find it annoying.
389: .Pp
390: The default is
391: .Dq yes
392: (to send keepalives), and the client will notice
393: if the network goes down or the remote host dies.
394: This is important in scripts, and many users want it too.
395: .Pp
396: To disable keepalives, the value should be set to
397: .Dq no .
398: .It Cm KerberosAuthentication
399: Specifies whether Kerberos authentication will be used.
400: The argument to this keyword must be
401: .Dq yes
402: or
403: .Dq no .
404: .It Cm KerberosTgtPassing
405: Specifies whether a Kerberos TGT will be forwarded to the server.
406: The argument to this keyword must be
407: .Dq yes
408: or
409: .Dq no .
410: .It Cm LocalForward
411: Specifies that a TCP/IP port on the local machine be forwarded over
412: the secure channel to the specified host and port from the remote machine.
413: The first argument must be a port number, and the second must be
414: .Ar host:port .
415: IPv6 addresses can be specified with an alternative syntax:
416: .Ar host/port .
417: Multiple forwardings may be specified, and additional
418: forwardings can be given on the command line.
419: Only the superuser can forward privileged ports.
420: .It Cm LogLevel
421: Gives the verbosity level that is used when logging messages from
422: .Nm ssh .
423: The possible values are:
424: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 and DEBUG3.
1.7 jmc 425: The default is INFO.
426: DEBUG and DEBUG1 are equivalent.
427: DEBUG2 and DEBUG3 each specify higher levels of verbose output.
1.1 stevesk 428: .It Cm MACs
429: Specifies the MAC (message authentication code) algorithms
430: in order of preference.
431: The MAC algorithm is used in protocol version 2
432: for data integrity protection.
433: Multiple algorithms must be comma-separated.
434: The default is
435: .Dq hmac-md5,hmac-sha1,hmac-ripemd160,hmac-sha1-96,hmac-md5-96 .
436: .It Cm NoHostAuthenticationForLocalhost
437: This option can be used if the home directory is shared across machines.
438: In this case localhost will refer to a different machine on each of
439: the machines and the user will get many warnings about changed host keys.
440: However, this option disables host authentication for localhost.
441: The argument to this keyword must be
442: .Dq yes
443: or
444: .Dq no .
445: The default is to check the host key for localhost.
446: .It Cm NumberOfPasswordPrompts
447: Specifies the number of password prompts before giving up.
448: The argument to this keyword must be an integer.
449: Default is 3.
450: .It Cm PasswordAuthentication
451: Specifies whether to use password authentication.
452: The argument to this keyword must be
453: .Dq yes
454: or
455: .Dq no .
456: The default is
457: .Dq yes .
458: .It Cm Port
459: Specifies the port number to connect on the remote host.
460: Default is 22.
461: .It Cm PreferredAuthentications
462: Specifies the order in which the client should try protocol 2
1.11 jmc 463: authentication methods.
464: This allows a client to prefer one method (e.g.
1.1 stevesk 465: .Cm keyboard-interactive )
466: over another method (e.g.
467: .Cm password )
468: The default for this option is:
469: .Dq hostbased,publickey,keyboard-interactive,password .
470: .It Cm Protocol
471: Specifies the protocol versions
472: .Nm ssh
473: should support in order of preference.
474: The possible values are
475: .Dq 1
476: and
477: .Dq 2 .
478: Multiple versions must be comma-separated.
479: The default is
480: .Dq 2,1 .
481: This means that
482: .Nm ssh
483: tries version 2 and falls back to version 1
484: if version 2 is not available.
485: .It Cm ProxyCommand
486: Specifies the command to use to connect to the server.
487: The command
488: string extends to the end of the line, and is executed with
489: .Pa /bin/sh .
490: In the command string,
491: .Ql %h
492: will be substituted by the host name to
493: connect and
494: .Ql %p
495: by the port.
496: The command can be basically anything,
497: and should read from its standard input and write to its standard output.
498: It should eventually connect an
499: .Xr sshd 8
500: server running on some machine, or execute
501: .Ic sshd -i
502: somewhere.
503: Host key management will be done using the
504: HostName of the host being connected (defaulting to the name typed by
505: the user).
1.7 jmc 506: Setting the command to
507: .Dq none
1.6 markus 508: disables this option entirely.
1.1 stevesk 509: Note that
510: .Cm CheckHostIP
511: is not available for connects with a proxy command.
512: .Pp
513: .It Cm PubkeyAuthentication
514: Specifies whether to try public key authentication.
515: The argument to this keyword must be
516: .Dq yes
517: or
518: .Dq no .
519: The default is
520: .Dq yes .
521: This option applies to protocol version 2 only.
522: .It Cm RemoteForward
523: Specifies that a TCP/IP port on the remote machine be forwarded over
524: the secure channel to the specified host and port from the local machine.
525: The first argument must be a port number, and the second must be
526: .Ar host:port .
527: IPv6 addresses can be specified with an alternative syntax:
528: .Ar host/port .
529: Multiple forwardings may be specified, and additional
530: forwardings can be given on the command line.
531: Only the superuser can forward privileged ports.
532: .It Cm RhostsAuthentication
533: Specifies whether to try rhosts based authentication.
534: Note that this
535: declaration only affects the client side and has no effect whatsoever
536: on security.
537: Most servers do not permit RhostsAuthentication because it
538: is not secure (see
539: .Cm RhostsRSAAuthentication ) .
540: The argument to this keyword must be
541: .Dq yes
542: or
543: .Dq no .
544: The default is
545: .Dq no .
1.4 stevesk 546: This option applies to protocol version 1 only and requires
547: .Nm ssh
548: to be setuid root and
549: .Cm UsePrivilegedPort
550: to be set to
551: .Dq yes .
1.1 stevesk 552: .It Cm RhostsRSAAuthentication
553: Specifies whether to try rhosts based authentication with RSA host
554: authentication.
555: The argument must be
556: .Dq yes
557: or
558: .Dq no .
559: The default is
560: .Dq no .
561: This option applies to protocol version 1 only and requires
562: .Nm ssh
563: to be setuid root.
564: .It Cm RSAAuthentication
565: Specifies whether to try RSA authentication.
566: The argument to this keyword must be
567: .Dq yes
568: or
569: .Dq no .
570: RSA authentication will only be
571: attempted if the identity file exists, or an authentication agent is
572: running.
573: The default is
574: .Dq yes .
575: Note that this option applies to protocol version 1 only.
576: .It Cm SmartcardDevice
1.11 jmc 577: Specifies which smartcard device to use.
578: The argument to this keyword is the device
1.1 stevesk 579: .Nm ssh
580: should use to communicate with a smartcard used for storing the user's
1.11 jmc 581: private RSA key.
582: By default, no device is specified and smartcard support is not activated.
1.1 stevesk 583: .It Cm StrictHostKeyChecking
584: If this flag is set to
585: .Dq yes ,
586: .Nm ssh
587: will never automatically add host keys to the
588: .Pa $HOME/.ssh/known_hosts
589: file, and refuses to connect to hosts whose host key has changed.
590: This provides maximum protection against trojan horse attacks,
591: however, can be annoying when the
592: .Pa /etc/ssh/ssh_known_hosts
593: file is poorly maintained, or connections to new hosts are
594: frequently made.
595: This option forces the user to manually
596: add all new hosts.
597: If this flag is set to
598: .Dq no ,
599: .Nm ssh
600: will automatically add new host keys to the
601: user known hosts files.
602: If this flag is set to
603: .Dq ask ,
604: new host keys
605: will be added to the user known host files only after the user
606: has confirmed that is what they really want to do, and
607: .Nm ssh
608: will refuse to connect to hosts whose host key has changed.
609: The host keys of
610: known hosts will be verified automatically in all cases.
611: The argument must be
612: .Dq yes ,
613: .Dq no
614: or
615: .Dq ask .
616: The default is
617: .Dq ask .
618: .It Cm UsePrivilegedPort
619: Specifies whether to use a privileged port for outgoing connections.
620: The argument must be
621: .Dq yes
622: or
623: .Dq no .
624: The default is
625: .Dq no .
1.4 stevesk 626: If set to
627: .Dq yes
628: .Nm ssh
629: must be setuid root.
1.1 stevesk 630: Note that this option must be set to
631: .Dq yes
632: if
633: .Cm RhostsAuthentication
634: and
635: .Cm RhostsRSAAuthentication
636: authentications are needed with older servers.
637: .It Cm User
638: Specifies the user to log in as.
639: This can be useful when a different user name is used on different machines.
640: This saves the trouble of
641: having to remember to give the user name on the command line.
642: .It Cm UserKnownHostsFile
643: Specifies a file to use for the user
644: host key database instead of
645: .Pa $HOME/.ssh/known_hosts .
1.8 jakob 646: .It Cm VerifyHostKeyDNS
647: Specifies whether to verify the remote key using DNS and SSHFP resource
648: records.
649: The default is
650: .Dq no .
1.12 jakob 651: Note that this option applies to protocol version 2 only.
1.1 stevesk 652: .It Cm XAuthLocation
1.5 stevesk 653: Specifies the full pathname of the
1.1 stevesk 654: .Xr xauth 1
655: program.
656: The default is
657: .Pa /usr/X11R6/bin/xauth .
658: .El
659: .Sh FILES
660: .Bl -tag -width Ds
661: .It Pa $HOME/.ssh/config
662: This is the per-user configuration file.
663: The format of this file is described above.
664: This file is used by the
665: .Nm ssh
666: client.
667: This file does not usually contain any sensitive information,
668: but the recommended permissions are read/write for the user, and not
669: accessible by others.
670: .It Pa /etc/ssh/ssh_config
671: Systemwide configuration file.
672: This file provides defaults for those
673: values that are not specified in the user's configuration file, and
674: for those users who do not have a configuration file.
675: This file must be world-readable.
676: .El
1.13 jmc 677: .Sh SEE ALSO
678: .Xr ssh 1
1.1 stevesk 679: .Sh AUTHORS
680: OpenSSH is a derivative of the original and free
681: ssh 1.2.12 release by Tatu Ylonen.
682: Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
683: Theo de Raadt and Dug Song
684: removed many bugs, re-added newer features and
685: created OpenSSH.
686: Markus Friedl contributed the support for SSH
687: protocol versions 1.5 and 2.0.