summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kettlewell <rjk@greenend.org.uk>2014-02-09 16:09:52 +0000
committerColin Watson <cjwatson@debian.org>2014-10-07 14:26:47 +0100
commitbd3abc2f732da3a61e4158b915480808957a4357 (patch)
treeaaf782fab71ffb0cb4579105a143e22a54975376
parentcbbc8577950b93090171c7394bcdeb68b7c3cd0c (diff)
Various keepalive extensions
Add compatibility aliases for ProtocolKeepAlives and SetupTimeOut, supported in previous versions of Debian's OpenSSH package but since superseded by ServerAliveInterval. (We're probably stuck with this bit for compatibility.) In batch mode, default ServerAliveInterval to five minutes. Adjust documentation to match and to give some more advice on use of keepalives. Author: Ian Jackson <ian@chiark.greenend.org.uk> Author: Matthew Vernon <matthew@debian.org> Author: Colin Watson <cjwatson@debian.org> Last-Update: 2014-10-07 Patch-Name: keepalive-extensions.patch
-rw-r--r--readconf.c14
-rw-r--r--ssh_config.521
-rw-r--r--sshd_config.53
3 files changed, 34 insertions, 4 deletions
diff --git a/readconf.c b/readconf.c
index bc879eb9b..337818c63 100644
--- a/readconf.c
+++ b/readconf.c
@@ -153,6 +153,7 @@ typedef enum {
153 oCanonicalDomains, oCanonicalizeHostname, oCanonicalizeMaxDots, 153 oCanonicalDomains, oCanonicalizeHostname, oCanonicalizeMaxDots,
154 oCanonicalizeFallbackLocal, oCanonicalizePermittedCNAMEs, 154 oCanonicalizeFallbackLocal, oCanonicalizePermittedCNAMEs,
155 oStreamLocalBindMask, oStreamLocalBindUnlink, 155 oStreamLocalBindMask, oStreamLocalBindUnlink,
156 oProtocolKeepAlives, oSetupTimeOut,
156 oIgnoredUnknownOption, oDeprecated, oUnsupported 157 oIgnoredUnknownOption, oDeprecated, oUnsupported
157} OpCodes; 158} OpCodes;
158 159
@@ -278,6 +279,8 @@ static struct {
278 { "streamlocalbindmask", oStreamLocalBindMask }, 279 { "streamlocalbindmask", oStreamLocalBindMask },
279 { "streamlocalbindunlink", oStreamLocalBindUnlink }, 280 { "streamlocalbindunlink", oStreamLocalBindUnlink },
280 { "ignoreunknown", oIgnoreUnknown }, 281 { "ignoreunknown", oIgnoreUnknown },
282 { "protocolkeepalives", oProtocolKeepAlives },
283 { "setuptimeout", oSetupTimeOut },
281 284
282 { NULL, oBadOption } 285 { NULL, oBadOption }
283}; 286};
@@ -1271,6 +1274,8 @@ parse_int:
1271 goto parse_flag; 1274 goto parse_flag;
1272 1275
1273 case oServerAliveInterval: 1276 case oServerAliveInterval:
1277 case oProtocolKeepAlives: /* Debian-specific compatibility alias */
1278 case oSetupTimeOut: /* Debian-specific compatibility alias */
1274 intptr = &options->server_alive_interval; 1279 intptr = &options->server_alive_interval;
1275 goto parse_time; 1280 goto parse_time;
1276 1281
@@ -1791,8 +1796,13 @@ fill_default_options(Options * options)
1791 options->rekey_interval = 0; 1796 options->rekey_interval = 0;
1792 if (options->verify_host_key_dns == -1) 1797 if (options->verify_host_key_dns == -1)
1793 options->verify_host_key_dns = 0; 1798 options->verify_host_key_dns = 0;
1794 if (options->server_alive_interval == -1) 1799 if (options->server_alive_interval == -1) {
1795 options->server_alive_interval = 0; 1800 /* in batch mode, default is 5mins */
1801 if (options->batch_mode == 1)
1802 options->server_alive_interval = 300;
1803 else
1804 options->server_alive_interval = 0;
1805 }
1796 if (options->server_alive_count_max == -1) 1806 if (options->server_alive_count_max == -1)
1797 options->server_alive_count_max = 3; 1807 options->server_alive_count_max = 3;
1798 if (options->control_master == -1) 1808 if (options->control_master == -1)
diff --git a/ssh_config.5 b/ssh_config.5
index 01f1f7ff6..ea92ea80d 100644
--- a/ssh_config.5
+++ b/ssh_config.5
@@ -205,8 +205,12 @@ Valid arguments are
205If set to 205If set to
206.Dq yes , 206.Dq yes ,
207passphrase/password querying will be disabled. 207passphrase/password querying will be disabled.
208In addition, the
209.Cm ServerAliveInterval
210option will be set to 300 seconds by default.
208This option is useful in scripts and other batch jobs where no user 211This option is useful in scripts and other batch jobs where no user
209is present to supply the password. 212is present to supply the password,
213and where it is desirable to detect a broken network swiftly.
210The argument must be 214The argument must be
211.Dq yes 215.Dq yes
212or 216or
@@ -1336,8 +1340,15 @@ from the server,
1336will send a message through the encrypted 1340will send a message through the encrypted
1337channel to request a response from the server. 1341channel to request a response from the server.
1338The default 1342The default
1339is 0, indicating that these messages will not be sent to the server. 1343is 0, indicating that these messages will not be sent to the server,
1344or 300 if the
1345.Cm BatchMode
1346option is set.
1340This option applies to protocol version 2 only. 1347This option applies to protocol version 2 only.
1348.Cm ProtocolKeepAlives
1349and
1350.Cm SetupTimeOut
1351are Debian-specific compatibility aliases for this option.
1341.It Cm StreamLocalBindMask 1352.It Cm StreamLocalBindMask
1342Sets the octal file creation mode mask 1353Sets the octal file creation mode mask
1343.Pq umask 1354.Pq umask
@@ -1403,6 +1414,12 @@ Specifies whether the system should send TCP keepalive messages to the
1403other side. 1414other side.
1404If they are sent, death of the connection or crash of one 1415If they are sent, death of the connection or crash of one
1405of the machines will be properly noticed. 1416of the machines will be properly noticed.
1417This option only uses TCP keepalives (as opposed to using ssh level
1418keepalives), so takes a long time to notice when the connection dies.
1419As such, you probably want
1420the
1421.Cm ServerAliveInterval
1422option as well.
1406However, this means that 1423However, this means that
1407connections will die if the route is down temporarily, and some people 1424connections will die if the route is down temporarily, and some people
1408find it annoying. 1425find it annoying.
diff --git a/sshd_config.5 b/sshd_config.5
index c8b43dae3..2843048f1 100644
--- a/sshd_config.5
+++ b/sshd_config.5
@@ -1307,6 +1307,9 @@ This avoids infinitely hanging sessions.
1307.Pp 1307.Pp
1308To disable TCP keepalive messages, the value should be set to 1308To disable TCP keepalive messages, the value should be set to
1309.Dq no . 1309.Dq no .
1310.Pp
1311This option was formerly called
1312.Cm KeepAlive .
1310.It Cm TrustedUserCAKeys 1313.It Cm TrustedUserCAKeys
1311Specifies a file containing public keys of certificate authorities that are 1314Specifies a file containing public keys of certificate authorities that are
1312trusted to sign user certificates for authentication. 1315trusted to sign user certificates for authentication.