diff options
author | Colin Watson <cjwatson@debian.org> | 2011-01-24 12:43:25 +0000 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2011-01-24 12:43:25 +0000 |
commit | 626f1d986ff72aa514da63e34744e1de9cf21b9a (patch) | |
tree | d215a5280bc2e57251e4a9e08bfd3674ad824a94 /debian/patches/gssapi.patch | |
parent | 6ed622cb6fe8f71bbe0d998cdd12280410bfb420 (diff) | |
parent | 0970072c89b079b022538e3c366fbfa2c53fc821 (diff) |
* New upstream release (http://www.openssh.org/txt/release-5.7):
- Implement Elliptic Curve Cryptography modes for key exchange (ECDH)
and host/user keys (ECDSA) as specified by RFC5656. ECDH and ECDSA
offer better performance than plain DH and DSA at the same equivalent
symmetric key length, as well as much shorter keys.
- sftp(1)/sftp-server(8): add a protocol extension to support a hard
link operation. It is available through the "ln" command in the
client. The old "ln" behaviour of creating a symlink is available
using its "-s" option or through the preexisting "symlink" command.
- scp(1): Add a new -3 option to scp: Copies between two remote hosts
are transferred through the local host (closes: #508613).
- ssh(1): "atomically" create the listening mux socket by binding it on
a temporary name and then linking it into position after listen() has
succeeded. This allows the mux clients to determine that the server
socket is either ready or stale without races (closes: #454784).
Stale server sockets are now automatically removed (closes: #523250).
- ssh(1): install a SIGCHLD handler to reap expired child process
(closes: #594687).
- ssh(1)/ssh-agent(1): honour $TMPDIR for client xauth and ssh-agent
temporary directories (closes: #357469, although only if you arrange
for ssh-agent to actually see $TMPDIR since the setgid bit will cause
it to be stripped off).
Diffstat (limited to 'debian/patches/gssapi.patch')
-rw-r--r-- | debian/patches/gssapi.patch | 201 |
1 files changed, 128 insertions, 73 deletions
diff --git a/debian/patches/gssapi.patch b/debian/patches/gssapi.patch index 778c23023..692437142 100644 --- a/debian/patches/gssapi.patch +++ b/debian/patches/gssapi.patch | |||
@@ -19,14 +19,24 @@ Index: b/ChangeLog.gssapi | |||
19 | =================================================================== | 19 | =================================================================== |
20 | --- /dev/null | 20 | --- /dev/null |
21 | +++ b/ChangeLog.gssapi | 21 | +++ b/ChangeLog.gssapi |
22 | @@ -0,0 +1,103 @@ | 22 | @@ -0,0 +1,113 @@ |
23 | +20110101 | ||
24 | + - Finally update for OpenSSH 5.6p1 | ||
25 | + - Add GSSAPIServerIdentity option from Jim Basney | ||
26 | + | ||
27 | +20100308 | ||
28 | + - [ Makefile.in, key.c, key.h ] | ||
29 | + Updates for OpenSSH 5.4p1 | ||
30 | + - [ servconf.c ] | ||
31 | + Include GSSAPI options in the sshd -T configuration dump, and flag | ||
32 | + some older configuration options as being unsupported. Thanks to Colin | ||
33 | + Watson. | ||
34 | + - | ||
35 | + | ||
23 | +20100124 | 36 | +20100124 |
24 | + - [ sshconnect2.c ] | 37 | + - [ sshconnect2.c ] |
25 | + Adapt to deal with additional element in Authmethod structure. Thanks to | 38 | + Adapt to deal with additional element in Authmethod structure. Thanks to |
26 | + Colin Wilson | 39 | + Colin Watson |
27 | + - [ clientloop.c ] | ||
28 | + Protect credentials updated code with suitable #ifdefs. Thanks to Colin | ||
29 | + Wilson | ||
30 | + | 40 | + |
31 | +20090615 | 41 | +20090615 |
32 | + - [ gss-genr.c gss-serv.c kexgssc.c kexgsss.c monitor.c sshconnect2.c | 42 | + - [ gss-genr.c gss-serv.c kexgssc.c kexgsss.c monitor.c sshconnect2.c |
@@ -127,23 +137,23 @@ Index: b/Makefile.in | |||
127 | =================================================================== | 137 | =================================================================== |
128 | --- a/Makefile.in | 138 | --- a/Makefile.in |
129 | +++ b/Makefile.in | 139 | +++ b/Makefile.in |
130 | @@ -74,7 +74,7 @@ | 140 | @@ -75,7 +75,7 @@ |
131 | monitor_fdpass.o rijndael.o ssh-dss.o ssh-rsa.o dh.o kexdh.o \ | 141 | monitor_fdpass.o rijndael.o ssh-dss.o ssh-ecdsa.o ssh-rsa.o dh.o \ |
132 | kexgex.o kexdhc.o kexgexc.o msg.o progressmeter.o dns.o \ | 142 | kexdh.o kexgex.o kexdhc.o kexgexc.o bufec.o kexecdh.o kexecdhc.o \ |
133 | entropy.o gss-genr.o umac.o jpake.o schnorr.o \ | 143 | msg.o progressmeter.o dns.o entropy.o gss-genr.o umac.o jpake.o \ |
134 | - ssh-pkcs11.o | 144 | - schnorr.o ssh-pkcs11.o |
135 | + ssh-pkcs11.o kexgssc.o | 145 | + schnorr.o kexgssc.o ssh-pkcs11.o |
136 | 146 | ||
137 | SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \ | 147 | SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \ |
138 | sshconnect.o sshconnect1.o sshconnect2.o mux.o \ | 148 | sshconnect.o sshconnect1.o sshconnect2.o mux.o \ |
139 | @@ -88,7 +88,7 @@ | 149 | @@ -90,7 +90,7 @@ |
140 | auth2-none.o auth2-passwd.o auth2-pubkey.o auth2-jpake.o \ | 150 | auth2-none.o auth2-passwd.o auth2-pubkey.o auth2-jpake.o \ |
141 | monitor_mm.o monitor.o monitor_wrap.o kexdhs.o kexgexs.o \ | 151 | monitor_mm.o monitor.o monitor_wrap.o kexdhs.o kexgexs.o kexecdhs.o \ |
142 | auth-krb5.o \ | 152 | auth-krb5.o \ |
143 | - auth2-gss.o gss-serv.o gss-serv-krb5.o \ | 153 | - auth2-gss.o gss-serv.o gss-serv-krb5.o \ |
144 | + auth2-gss.o gss-serv.o gss-serv-krb5.o kexgsss.o\ | 154 | + auth2-gss.o gss-serv.o gss-serv-krb5.o kexgsss.o\ |
145 | loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \ | 155 | loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \ |
146 | audit.o audit-bsm.o platform.o sftp-server.o sftp-common.o \ | 156 | sftp-server.o sftp-common.o \ |
147 | roaming_common.o roaming_serv.o | 157 | roaming_common.o roaming_serv.o |
148 | Index: b/auth-krb5.c | 158 | Index: b/auth-krb5.c |
149 | =================================================================== | 159 | =================================================================== |
@@ -384,7 +394,7 @@ Index: b/configure.ac | |||
384 | =================================================================== | 394 | =================================================================== |
385 | --- a/configure.ac | 395 | --- a/configure.ac |
386 | +++ b/configure.ac | 396 | +++ b/configure.ac |
387 | @@ -477,6 +477,30 @@ | 397 | @@ -514,6 +514,30 @@ |
388 | [Use tunnel device compatibility to OpenBSD]) | 398 | [Use tunnel device compatibility to OpenBSD]) |
389 | AC_DEFINE(SSH_TUN_PREPEND_AF, 1, | 399 | AC_DEFINE(SSH_TUN_PREPEND_AF, 1, |
390 | [Prepend the address family to IP tunnel traffic]) | 400 | [Prepend the address family to IP tunnel traffic]) |
@@ -1222,9 +1232,9 @@ Index: b/kex.c | |||
1222 | #if OPENSSL_VERSION_NUMBER >= 0x00907000L | 1232 | #if OPENSSL_VERSION_NUMBER >= 0x00907000L |
1223 | # if defined(HAVE_EVP_SHA256) | 1233 | # if defined(HAVE_EVP_SHA256) |
1224 | # define evp_ssh_sha256 EVP_sha256 | 1234 | # define evp_ssh_sha256 EVP_sha256 |
1225 | @@ -326,6 +330,20 @@ | 1235 | @@ -358,6 +362,20 @@ |
1226 | k->kex_type = KEX_DH_GEX_SHA256; | 1236 | k->kex_type = KEX_ECDH_SHA2; |
1227 | k->evp_md = evp_ssh_sha256(); | 1237 | k->evp_md = kex_ecdh_name_to_evpmd(k->name); |
1228 | #endif | 1238 | #endif |
1229 | +#ifdef GSSAPI | 1239 | +#ifdef GSSAPI |
1230 | + } else if (strncmp(k->name, KEX_GSS_GEX_SHA1_ID, | 1240 | + } else if (strncmp(k->name, KEX_GSS_GEX_SHA1_ID, |
@@ -1247,17 +1257,17 @@ Index: b/kex.h | |||
1247 | =================================================================== | 1257 | =================================================================== |
1248 | --- a/kex.h | 1258 | --- a/kex.h |
1249 | +++ b/kex.h | 1259 | +++ b/kex.h |
1250 | @@ -67,6 +67,9 @@ | 1260 | @@ -73,6 +73,9 @@ |
1251 | KEX_DH_GRP14_SHA1, | ||
1252 | KEX_DH_GEX_SHA1, | 1261 | KEX_DH_GEX_SHA1, |
1253 | KEX_DH_GEX_SHA256, | 1262 | KEX_DH_GEX_SHA256, |
1263 | KEX_ECDH_SHA2, | ||
1254 | + KEX_GSS_GRP1_SHA1, | 1264 | + KEX_GSS_GRP1_SHA1, |
1255 | + KEX_GSS_GRP14_SHA1, | 1265 | + KEX_GSS_GRP14_SHA1, |
1256 | + KEX_GSS_GEX_SHA1, | 1266 | + KEX_GSS_GEX_SHA1, |
1257 | KEX_MAX | 1267 | KEX_MAX |
1258 | }; | 1268 | }; |
1259 | 1269 | ||
1260 | @@ -123,6 +126,12 @@ | 1270 | @@ -129,6 +132,12 @@ |
1261 | sig_atomic_t done; | 1271 | sig_atomic_t done; |
1262 | int flags; | 1272 | int flags; |
1263 | const EVP_MD *evp_md; | 1273 | const EVP_MD *evp_md; |
@@ -1270,9 +1280,9 @@ Index: b/kex.h | |||
1270 | char *client_version_string; | 1280 | char *client_version_string; |
1271 | char *server_version_string; | 1281 | char *server_version_string; |
1272 | int (*verify_host_key)(Key *); | 1282 | int (*verify_host_key)(Key *); |
1273 | @@ -146,6 +155,11 @@ | 1283 | @@ -156,6 +165,11 @@ |
1274 | void kexgex_client(Kex *); | 1284 | void kexecdh_client(Kex *); |
1275 | void kexgex_server(Kex *); | 1285 | void kexecdh_server(Kex *); |
1276 | 1286 | ||
1277 | +#ifdef GSSAPI | 1287 | +#ifdef GSSAPI |
1278 | +void kexgss_client(Kex *); | 1288 | +void kexgss_client(Kex *); |
@@ -1918,21 +1928,30 @@ Index: b/key.c | |||
1918 | =================================================================== | 1928 | =================================================================== |
1919 | --- a/key.c | 1929 | --- a/key.c |
1920 | +++ b/key.c | 1930 | +++ b/key.c |
1921 | @@ -1020,6 +1020,8 @@ | 1931 | @@ -971,6 +971,8 @@ |
1922 | return KEY_RSA_CERT; | 1932 | } |
1923 | } else if (strcmp(name, "ssh-dss-cert-v01@openssh.com") == 0) { | 1933 | break; |
1924 | return KEY_DSA_CERT; | 1934 | #endif /* OPENSSL_HAS_ECC */ |
1935 | + case KEY_NULL: | ||
1936 | + return "null"; | ||
1937 | } | ||
1938 | return "ssh-unknown"; | ||
1939 | } | ||
1940 | @@ -1276,6 +1278,8 @@ | ||
1941 | strcmp(name, "ecdsa-sha2-nistp521-cert-v01@openssh.com") == 0) { | ||
1942 | return KEY_ECDSA_CERT; | ||
1943 | #endif | ||
1925 | + } else if (strcmp(name, "null") == 0) { | 1944 | + } else if (strcmp(name, "null") == 0) { |
1926 | + return KEY_NULL; | 1945 | + return KEY_NULL; |
1927 | } | 1946 | } |
1947 | |||
1928 | debug2("key_type_from_name: unknown key type '%s'", name); | 1948 | debug2("key_type_from_name: unknown key type '%s'", name); |
1929 | return KEY_UNSPEC; | ||
1930 | Index: b/key.h | 1949 | Index: b/key.h |
1931 | =================================================================== | 1950 | =================================================================== |
1932 | --- a/key.h | 1951 | --- a/key.h |
1933 | +++ b/key.h | 1952 | +++ b/key.h |
1934 | @@ -39,6 +39,7 @@ | 1953 | @@ -44,6 +44,7 @@ |
1935 | KEY_DSA_CERT, | 1954 | KEY_ECDSA_CERT, |
1936 | KEY_RSA_CERT_V00, | 1955 | KEY_RSA_CERT_V00, |
1937 | KEY_DSA_CERT_V00, | 1956 | KEY_DSA_CERT_V00, |
1938 | + KEY_NULL, | 1957 | + KEY_NULL, |
@@ -1995,10 +2014,10 @@ Index: b/monitor.c | |||
1995 | } else { | 2014 | } else { |
1996 | mon_dispatch = mon_dispatch_postauth15; | 2015 | mon_dispatch = mon_dispatch_postauth15; |
1997 | monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1); | 2016 | monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1); |
1998 | @@ -1691,6 +1708,13 @@ | 2017 | @@ -1692,6 +1709,13 @@ |
1999 | kex->kex[KEX_DH_GRP14_SHA1] = kexdh_server; | ||
2000 | kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; | 2018 | kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; |
2001 | kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; | 2019 | kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; |
2020 | kex->kex[KEX_ECDH_SHA2] = kexecdh_server; | ||
2002 | +#ifdef GSSAPI | 2021 | +#ifdef GSSAPI |
2003 | + if (options.gss_keyex) { | 2022 | + if (options.gss_keyex) { |
2004 | + kex->kex[KEX_GSS_GRP1_SHA1] = kexgss_server; | 2023 | + kex->kex[KEX_GSS_GRP1_SHA1] = kexgss_server; |
@@ -2009,7 +2028,7 @@ Index: b/monitor.c | |||
2009 | kex->server = 1; | 2028 | kex->server = 1; |
2010 | kex->hostkey_type = buffer_get_int(m); | 2029 | kex->hostkey_type = buffer_get_int(m); |
2011 | kex->kex_type = buffer_get_int(m); | 2030 | kex->kex_type = buffer_get_int(m); |
2012 | @@ -1897,6 +1921,9 @@ | 2031 | @@ -1898,6 +1922,9 @@ |
2013 | OM_uint32 major; | 2032 | OM_uint32 major; |
2014 | u_int len; | 2033 | u_int len; |
2015 | 2034 | ||
@@ -2019,7 +2038,7 @@ Index: b/monitor.c | |||
2019 | goid.elements = buffer_get_string(m, &len); | 2038 | goid.elements = buffer_get_string(m, &len); |
2020 | goid.length = len; | 2039 | goid.length = len; |
2021 | 2040 | ||
2022 | @@ -1924,6 +1951,9 @@ | 2041 | @@ -1925,6 +1952,9 @@ |
2023 | OM_uint32 flags = 0; /* GSI needs this */ | 2042 | OM_uint32 flags = 0; /* GSI needs this */ |
2024 | u_int len; | 2043 | u_int len; |
2025 | 2044 | ||
@@ -2029,7 +2048,7 @@ Index: b/monitor.c | |||
2029 | in.value = buffer_get_string(m, &len); | 2048 | in.value = buffer_get_string(m, &len); |
2030 | in.length = len; | 2049 | in.length = len; |
2031 | major = ssh_gssapi_accept_ctx(gsscontext, &in, &out, &flags); | 2050 | major = ssh_gssapi_accept_ctx(gsscontext, &in, &out, &flags); |
2032 | @@ -1941,6 +1971,7 @@ | 2051 | @@ -1942,6 +1972,7 @@ |
2033 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); | 2052 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); |
2034 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); | 2053 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); |
2035 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1); | 2054 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1); |
@@ -2037,7 +2056,7 @@ Index: b/monitor.c | |||
2037 | } | 2056 | } |
2038 | return (0); | 2057 | return (0); |
2039 | } | 2058 | } |
2040 | @@ -1952,6 +1983,9 @@ | 2059 | @@ -1953,6 +1984,9 @@ |
2041 | OM_uint32 ret; | 2060 | OM_uint32 ret; |
2042 | u_int len; | 2061 | u_int len; |
2043 | 2062 | ||
@@ -2047,7 +2066,7 @@ Index: b/monitor.c | |||
2047 | gssbuf.value = buffer_get_string(m, &len); | 2066 | gssbuf.value = buffer_get_string(m, &len); |
2048 | gssbuf.length = len; | 2067 | gssbuf.length = len; |
2049 | mic.value = buffer_get_string(m, &len); | 2068 | mic.value = buffer_get_string(m, &len); |
2050 | @@ -1978,7 +2012,11 @@ | 2069 | @@ -1979,7 +2013,11 @@ |
2051 | { | 2070 | { |
2052 | int authenticated; | 2071 | int authenticated; |
2053 | 2072 | ||
@@ -2060,7 +2079,7 @@ Index: b/monitor.c | |||
2060 | 2079 | ||
2061 | buffer_clear(m); | 2080 | buffer_clear(m); |
2062 | buffer_put_int(m, authenticated); | 2081 | buffer_put_int(m, authenticated); |
2063 | @@ -1991,6 +2029,74 @@ | 2082 | @@ -1992,6 +2030,74 @@ |
2064 | /* Monitor loop will terminate if authenticated */ | 2083 | /* Monitor loop will terminate if authenticated */ |
2065 | return (authenticated); | 2084 | return (authenticated); |
2066 | } | 2085 | } |
@@ -2152,7 +2171,7 @@ Index: b/monitor_wrap.c | |||
2152 | =================================================================== | 2171 | =================================================================== |
2153 | --- a/monitor_wrap.c | 2172 | --- a/monitor_wrap.c |
2154 | +++ b/monitor_wrap.c | 2173 | +++ b/monitor_wrap.c |
2155 | @@ -1231,7 +1231,7 @@ | 2174 | @@ -1232,7 +1232,7 @@ |
2156 | } | 2175 | } |
2157 | 2176 | ||
2158 | int | 2177 | int |
@@ -2161,7 +2180,7 @@ Index: b/monitor_wrap.c | |||
2161 | { | 2180 | { |
2162 | Buffer m; | 2181 | Buffer m; |
2163 | int authenticated = 0; | 2182 | int authenticated = 0; |
2164 | @@ -1248,6 +1248,51 @@ | 2183 | @@ -1249,6 +1249,51 @@ |
2165 | debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not "); | 2184 | debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not "); |
2166 | return (authenticated); | 2185 | return (authenticated); |
2167 | } | 2186 | } |
@@ -2233,15 +2252,16 @@ Index: b/readconf.c | |||
2233 | =================================================================== | 2252 | =================================================================== |
2234 | --- a/readconf.c | 2253 | --- a/readconf.c |
2235 | +++ b/readconf.c | 2254 | +++ b/readconf.c |
2236 | @@ -127,6 +127,7 @@ | 2255 | @@ -129,6 +129,8 @@ |
2237 | oClearAllForwardings, oNoHostAuthenticationForLocalhost, | 2256 | oClearAllForwardings, oNoHostAuthenticationForLocalhost, |
2238 | oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout, | 2257 | oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout, |
2239 | oAddressFamily, oGssAuthentication, oGssDelegateCreds, | 2258 | oAddressFamily, oGssAuthentication, oGssDelegateCreds, |
2240 | + oGssTrustDns, oGssKeyEx, oGssClientIdentity, oGssRenewalRekey, | 2259 | + oGssTrustDns, oGssKeyEx, oGssClientIdentity, oGssRenewalRekey, |
2260 | + oGssServerIdentity, | ||
2241 | oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly, | 2261 | oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly, |
2242 | oSendEnv, oControlPath, oControlMaster, oControlPersist, | 2262 | oSendEnv, oControlPath, oControlMaster, oControlPersist, |
2243 | oHashKnownHosts, | 2263 | oHashKnownHosts, |
2244 | @@ -166,10 +167,18 @@ | 2264 | @@ -169,10 +171,19 @@ |
2245 | { "afstokenpassing", oUnsupported }, | 2265 | { "afstokenpassing", oUnsupported }, |
2246 | #if defined(GSSAPI) | 2266 | #if defined(GSSAPI) |
2247 | { "gssapiauthentication", oGssAuthentication }, | 2267 | { "gssapiauthentication", oGssAuthentication }, |
@@ -2249,6 +2269,7 @@ Index: b/readconf.c | |||
2249 | { "gssapidelegatecredentials", oGssDelegateCreds }, | 2269 | { "gssapidelegatecredentials", oGssDelegateCreds }, |
2250 | + { "gssapitrustdns", oGssTrustDns }, | 2270 | + { "gssapitrustdns", oGssTrustDns }, |
2251 | + { "gssapiclientidentity", oGssClientIdentity }, | 2271 | + { "gssapiclientidentity", oGssClientIdentity }, |
2272 | + { "gssapiserveridentity", oGssServerIdentity }, | ||
2252 | + { "gssapirenewalforcesrekey", oGssRenewalRekey }, | 2273 | + { "gssapirenewalforcesrekey", oGssRenewalRekey }, |
2253 | #else | 2274 | #else |
2254 | { "gssapiauthentication", oUnsupported }, | 2275 | { "gssapiauthentication", oUnsupported }, |
@@ -2260,7 +2281,7 @@ Index: b/readconf.c | |||
2260 | #endif | 2281 | #endif |
2261 | { "fallbacktorsh", oDeprecated }, | 2282 | { "fallbacktorsh", oDeprecated }, |
2262 | { "usersh", oDeprecated }, | 2283 | { "usersh", oDeprecated }, |
2263 | @@ -474,10 +483,26 @@ | 2284 | @@ -479,10 +490,30 @@ |
2264 | intptr = &options->gss_authentication; | 2285 | intptr = &options->gss_authentication; |
2265 | goto parse_flag; | 2286 | goto parse_flag; |
2266 | 2287 | ||
@@ -2280,6 +2301,10 @@ Index: b/readconf.c | |||
2280 | + charptr = &options->gss_client_identity; | 2301 | + charptr = &options->gss_client_identity; |
2281 | + goto parse_string; | 2302 | + goto parse_string; |
2282 | + | 2303 | + |
2304 | + case oGssServerIdentity: | ||
2305 | + charptr = &options->gss_server_identity; | ||
2306 | + goto parse_string; | ||
2307 | + | ||
2283 | + case oGssRenewalRekey: | 2308 | + case oGssRenewalRekey: |
2284 | + intptr = &options->gss_renewal_rekey; | 2309 | + intptr = &options->gss_renewal_rekey; |
2285 | + goto parse_flag; | 2310 | + goto parse_flag; |
@@ -2287,7 +2312,7 @@ Index: b/readconf.c | |||
2287 | case oBatchMode: | 2312 | case oBatchMode: |
2288 | intptr = &options->batch_mode; | 2313 | intptr = &options->batch_mode; |
2289 | goto parse_flag; | 2314 | goto parse_flag; |
2290 | @@ -1058,7 +1083,11 @@ | 2315 | @@ -1092,7 +1123,12 @@ |
2291 | options->pubkey_authentication = -1; | 2316 | options->pubkey_authentication = -1; |
2292 | options->challenge_response_authentication = -1; | 2317 | options->challenge_response_authentication = -1; |
2293 | options->gss_authentication = -1; | 2318 | options->gss_authentication = -1; |
@@ -2296,10 +2321,11 @@ Index: b/readconf.c | |||
2296 | + options->gss_trust_dns = -1; | 2321 | + options->gss_trust_dns = -1; |
2297 | + options->gss_renewal_rekey = -1; | 2322 | + options->gss_renewal_rekey = -1; |
2298 | + options->gss_client_identity = NULL; | 2323 | + options->gss_client_identity = NULL; |
2324 | + options->gss_server_identity = NULL; | ||
2299 | options->password_authentication = -1; | 2325 | options->password_authentication = -1; |
2300 | options->kbd_interactive_authentication = -1; | 2326 | options->kbd_interactive_authentication = -1; |
2301 | options->kbd_interactive_devices = NULL; | 2327 | options->kbd_interactive_devices = NULL; |
2302 | @@ -1156,8 +1185,14 @@ | 2328 | @@ -1193,8 +1229,14 @@ |
2303 | options->challenge_response_authentication = 1; | 2329 | options->challenge_response_authentication = 1; |
2304 | if (options->gss_authentication == -1) | 2330 | if (options->gss_authentication == -1) |
2305 | options->gss_authentication = 0; | 2331 | options->gss_authentication = 0; |
@@ -2318,7 +2344,7 @@ Index: b/readconf.h | |||
2318 | =================================================================== | 2344 | =================================================================== |
2319 | --- a/readconf.h | 2345 | --- a/readconf.h |
2320 | +++ b/readconf.h | 2346 | +++ b/readconf.h |
2321 | @@ -46,7 +46,11 @@ | 2347 | @@ -46,7 +46,12 @@ |
2322 | int challenge_response_authentication; | 2348 | int challenge_response_authentication; |
2323 | /* Try S/Key or TIS, authentication. */ | 2349 | /* Try S/Key or TIS, authentication. */ |
2324 | int gss_authentication; /* Try GSS authentication */ | 2350 | int gss_authentication; /* Try GSS authentication */ |
@@ -2327,6 +2353,7 @@ Index: b/readconf.h | |||
2327 | + int gss_trust_dns; /* Trust DNS for GSS canonicalization */ | 2353 | + int gss_trust_dns; /* Trust DNS for GSS canonicalization */ |
2328 | + int gss_renewal_rekey; /* Credential renewal forces rekey */ | 2354 | + int gss_renewal_rekey; /* Credential renewal forces rekey */ |
2329 | + char *gss_client_identity; /* Principal to initiate GSSAPI with */ | 2355 | + char *gss_client_identity; /* Principal to initiate GSSAPI with */ |
2356 | + char *gss_server_identity; /* GSSAPI target principal */ | ||
2330 | int password_authentication; /* Try password | 2357 | int password_authentication; /* Try password |
2331 | * authentication. */ | 2358 | * authentication. */ |
2332 | int kbd_interactive_authentication; /* Try keyboard-interactive auth. */ | 2359 | int kbd_interactive_authentication; /* Try keyboard-interactive auth. */ |
@@ -2334,7 +2361,7 @@ Index: b/servconf.c | |||
2334 | =================================================================== | 2361 | =================================================================== |
2335 | --- a/servconf.c | 2362 | --- a/servconf.c |
2336 | +++ b/servconf.c | 2363 | +++ b/servconf.c |
2337 | @@ -93,7 +93,10 @@ | 2364 | @@ -97,7 +97,10 @@ |
2338 | options->kerberos_ticket_cleanup = -1; | 2365 | options->kerberos_ticket_cleanup = -1; |
2339 | options->kerberos_get_afs_token = -1; | 2366 | options->kerberos_get_afs_token = -1; |
2340 | options->gss_authentication=-1; | 2367 | options->gss_authentication=-1; |
@@ -2345,7 +2372,7 @@ Index: b/servconf.c | |||
2345 | options->password_authentication = -1; | 2372 | options->password_authentication = -1; |
2346 | options->kbd_interactive_authentication = -1; | 2373 | options->kbd_interactive_authentication = -1; |
2347 | options->challenge_response_authentication = -1; | 2374 | options->challenge_response_authentication = -1; |
2348 | @@ -215,8 +218,14 @@ | 2375 | @@ -226,8 +229,14 @@ |
2349 | options->kerberos_get_afs_token = 0; | 2376 | options->kerberos_get_afs_token = 0; |
2350 | if (options->gss_authentication == -1) | 2377 | if (options->gss_authentication == -1) |
2351 | options->gss_authentication = 0; | 2378 | options->gss_authentication = 0; |
@@ -2360,7 +2387,7 @@ Index: b/servconf.c | |||
2360 | if (options->password_authentication == -1) | 2387 | if (options->password_authentication == -1) |
2361 | options->password_authentication = 1; | 2388 | options->password_authentication = 1; |
2362 | if (options->kbd_interactive_authentication == -1) | 2389 | if (options->kbd_interactive_authentication == -1) |
2363 | @@ -307,7 +316,9 @@ | 2390 | @@ -322,7 +331,9 @@ |
2364 | sBanner, sUseDNS, sHostbasedAuthentication, | 2391 | sBanner, sUseDNS, sHostbasedAuthentication, |
2365 | sHostbasedUsesNameFromPacketOnly, sClientAliveInterval, | 2392 | sHostbasedUsesNameFromPacketOnly, sClientAliveInterval, |
2366 | sClientAliveCountMax, sAuthorizedKeysFile, sAuthorizedKeysFile2, | 2393 | sClientAliveCountMax, sAuthorizedKeysFile, sAuthorizedKeysFile2, |
@@ -2371,23 +2398,28 @@ Index: b/servconf.c | |||
2371 | sMatch, sPermitOpen, sForceCommand, sChrootDirectory, | 2398 | sMatch, sPermitOpen, sForceCommand, sChrootDirectory, |
2372 | sUsePrivilegeSeparation, sAllowAgentForwarding, | 2399 | sUsePrivilegeSeparation, sAllowAgentForwarding, |
2373 | sZeroKnowledgePasswordAuthentication, sHostCertificate, | 2400 | sZeroKnowledgePasswordAuthentication, sHostCertificate, |
2374 | @@ -370,9 +381,15 @@ | 2401 | @@ -386,10 +397,20 @@ |
2375 | #ifdef GSSAPI | 2402 | #ifdef GSSAPI |
2376 | { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL }, | 2403 | { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL }, |
2377 | { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL }, | 2404 | { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL }, |
2405 | + { "gssapicleanupcreds", sGssCleanupCreds, SSHCFG_GLOBAL }, | ||
2378 | + { "gssapistrictacceptorcheck", sGssStrictAcceptor, SSHCFG_GLOBAL }, | 2406 | + { "gssapistrictacceptorcheck", sGssStrictAcceptor, SSHCFG_GLOBAL }, |
2379 | + { "gssapikeyexchange", sGssKeyEx, SSHCFG_GLOBAL }, | 2407 | + { "gssapikeyexchange", sGssKeyEx, SSHCFG_GLOBAL }, |
2380 | + { "gssapistorecredentialsonrekey", sGssStoreRekey, SSHCFG_GLOBAL }, | 2408 | + { "gssapistorecredentialsonrekey", sGssStoreRekey, SSHCFG_GLOBAL }, |
2381 | #else | 2409 | #else |
2382 | { "gssapiauthentication", sUnsupported, SSHCFG_ALL }, | 2410 | { "gssapiauthentication", sUnsupported, SSHCFG_ALL }, |
2383 | { "gssapicleanupcredentials", sUnsupported, SSHCFG_GLOBAL }, | 2411 | { "gssapicleanupcredentials", sUnsupported, SSHCFG_GLOBAL }, |
2412 | + { "gssapicleanupcreds", sUnsupported, SSHCFG_GLOBAL }, | ||
2384 | + { "gssapistrictacceptorcheck", sUnsupported, SSHCFG_GLOBAL }, | 2413 | + { "gssapistrictacceptorcheck", sUnsupported, SSHCFG_GLOBAL }, |
2385 | + { "gssapikeyexchange", sUnsupported, SSHCFG_GLOBAL }, | 2414 | + { "gssapikeyexchange", sUnsupported, SSHCFG_GLOBAL }, |
2386 | + { "gssapistorecredentialsonrekey", sUnsupported, SSHCFG_GLOBAL }, | 2415 | + { "gssapistorecredentialsonrekey", sUnsupported, SSHCFG_GLOBAL }, |
2387 | #endif | 2416 | #endif |
2417 | + { "gssusesessionccache", sUnsupported, SSHCFG_GLOBAL }, | ||
2418 | + { "gssapiusesessioncredcache", sUnsupported, SSHCFG_GLOBAL }, | ||
2388 | { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, | 2419 | { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, |
2389 | { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, | 2420 | { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, |
2390 | @@ -926,10 +943,22 @@ | 2421 | { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, |
2422 | @@ -944,10 +965,22 @@ | ||
2391 | intptr = &options->gss_authentication; | 2423 | intptr = &options->gss_authentication; |
2392 | goto parse_flag; | 2424 | goto parse_flag; |
2393 | 2425 | ||
@@ -2410,11 +2442,22 @@ Index: b/servconf.c | |||
2410 | case sPasswordAuthentication: | 2442 | case sPasswordAuthentication: |
2411 | intptr = &options->password_authentication; | 2443 | intptr = &options->password_authentication; |
2412 | goto parse_flag; | 2444 | goto parse_flag; |
2445 | @@ -1704,7 +1737,10 @@ | ||
2446 | #endif | ||
2447 | #ifdef GSSAPI | ||
2448 | dump_cfg_fmtint(sGssAuthentication, o->gss_authentication); | ||
2449 | + dump_cfg_fmtint(sGssKeyEx, o->gss_keyex); | ||
2450 | dump_cfg_fmtint(sGssCleanupCreds, o->gss_cleanup_creds); | ||
2451 | + dump_cfg_fmtint(sGssStrictAcceptor, o->gss_strict_acceptor); | ||
2452 | + dump_cfg_fmtint(sGssStoreRekey, o->gss_store_rekey); | ||
2453 | #endif | ||
2454 | #ifdef JPAKE | ||
2455 | dump_cfg_fmtint(sZeroKnowledgePasswordAuthentication, | ||
2413 | Index: b/servconf.h | 2456 | Index: b/servconf.h |
2414 | =================================================================== | 2457 | =================================================================== |
2415 | --- a/servconf.h | 2458 | --- a/servconf.h |
2416 | +++ b/servconf.h | 2459 | +++ b/servconf.h |
2417 | @@ -94,7 +94,10 @@ | 2460 | @@ -97,7 +97,10 @@ |
2418 | int kerberos_get_afs_token; /* If true, try to get AFS token if | 2461 | int kerberos_get_afs_token; /* If true, try to get AFS token if |
2419 | * authenticated with Kerberos. */ | 2462 | * authenticated with Kerberos. */ |
2420 | int gss_authentication; /* If true, permit GSSAPI authentication */ | 2463 | int gss_authentication; /* If true, permit GSSAPI authentication */ |
@@ -2543,7 +2586,7 @@ Index: b/ssh_config.5 | |||
2543 | =================================================================== | 2586 | =================================================================== |
2544 | --- a/ssh_config.5 | 2587 | --- a/ssh_config.5 |
2545 | +++ b/ssh_config.5 | 2588 | +++ b/ssh_config.5 |
2546 | @@ -509,11 +509,38 @@ | 2589 | @@ -508,11 +508,43 @@ |
2547 | The default is | 2590 | The default is |
2548 | .Dq no . | 2591 | .Dq no . |
2549 | Note that this option applies to protocol version 2 only. | 2592 | Note that this option applies to protocol version 2 only. |
@@ -2557,6 +2600,11 @@ Index: b/ssh_config.5 | |||
2557 | +If set, specifies the GSSAPI client identity that ssh should use when | 2600 | +If set, specifies the GSSAPI client identity that ssh should use when |
2558 | +connecting to the server. The default is unset, which means that the default | 2601 | +connecting to the server. The default is unset, which means that the default |
2559 | +identity will be used. | 2602 | +identity will be used. |
2603 | +.It Cm GSSAPIServerIdentity | ||
2604 | +If set, specifies the GSSAPI server identity that ssh should expect when | ||
2605 | +connecting to the server. The default is unset, which means that the | ||
2606 | +expected GSSAPI server identity will be determined from the target | ||
2607 | +hostname. | ||
2560 | .It Cm GSSAPIDelegateCredentials | 2608 | .It Cm GSSAPIDelegateCredentials |
2561 | Forward (delegate) credentials to the server. | 2609 | Forward (delegate) credentials to the server. |
2562 | The default is | 2610 | The default is |
@@ -2587,7 +2635,7 @@ Index: b/sshconnect2.c | |||
2587 | =================================================================== | 2635 | =================================================================== |
2588 | --- a/sshconnect2.c | 2636 | --- a/sshconnect2.c |
2589 | +++ b/sshconnect2.c | 2637 | +++ b/sshconnect2.c |
2590 | @@ -106,9 +106,34 @@ | 2638 | @@ -159,9 +159,34 @@ |
2591 | { | 2639 | { |
2592 | Kex *kex; | 2640 | Kex *kex; |
2593 | 2641 | ||
@@ -2622,9 +2670,9 @@ Index: b/sshconnect2.c | |||
2622 | if (options.ciphers == (char *)-1) { | 2670 | if (options.ciphers == (char *)-1) { |
2623 | logit("No valid ciphers for protocol version 2 given, using defaults."); | 2671 | logit("No valid ciphers for protocol version 2 given, using defaults."); |
2624 | options.ciphers = NULL; | 2672 | options.ciphers = NULL; |
2625 | @@ -136,6 +161,17 @@ | 2673 | @@ -196,6 +221,17 @@ |
2626 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = | 2674 | if (options.kex_algorithms != NULL) |
2627 | options.hostkeyalgorithms; | 2675 | myproposal[PROPOSAL_KEX_ALGS] = options.kex_algorithms; |
2628 | 2676 | ||
2629 | +#ifdef GSSAPI | 2677 | +#ifdef GSSAPI |
2630 | + /* If we've got GSSAPI algorithms, then we also support the | 2678 | + /* If we've got GSSAPI algorithms, then we also support the |
@@ -2640,10 +2688,10 @@ Index: b/sshconnect2.c | |||
2640 | if (options.rekey_limit) | 2688 | if (options.rekey_limit) |
2641 | packet_set_rekey_limit((u_int32_t)options.rekey_limit); | 2689 | packet_set_rekey_limit((u_int32_t)options.rekey_limit); |
2642 | 2690 | ||
2643 | @@ -145,10 +181,26 @@ | 2691 | @@ -206,10 +242,30 @@ |
2644 | kex->kex[KEX_DH_GRP14_SHA1] = kexdh_client; | ||
2645 | kex->kex[KEX_DH_GEX_SHA1] = kexgex_client; | 2692 | kex->kex[KEX_DH_GEX_SHA1] = kexgex_client; |
2646 | kex->kex[KEX_DH_GEX_SHA256] = kexgex_client; | 2693 | kex->kex[KEX_DH_GEX_SHA256] = kexgex_client; |
2694 | kex->kex[KEX_ECDH_SHA2] = kexecdh_client; | ||
2647 | +#ifdef GSSAPI | 2695 | +#ifdef GSSAPI |
2648 | + if (options.gss_keyex) { | 2696 | + if (options.gss_keyex) { |
2649 | + kex->kex[KEX_GSS_GRP1_SHA1] = kexgss_client; | 2697 | + kex->kex[KEX_GSS_GRP1_SHA1] = kexgss_client; |
@@ -2660,14 +2708,18 @@ Index: b/sshconnect2.c | |||
2660 | + kex->gss_deleg_creds = options.gss_deleg_creds; | 2708 | + kex->gss_deleg_creds = options.gss_deleg_creds; |
2661 | + kex->gss_trust_dns = options.gss_trust_dns; | 2709 | + kex->gss_trust_dns = options.gss_trust_dns; |
2662 | + kex->gss_client = options.gss_client_identity; | 2710 | + kex->gss_client = options.gss_client_identity; |
2663 | + kex->gss_host = gss_host; | 2711 | + if (options.gss_server_identity) { |
2712 | + kex->gss_host = options.gss_server_identity; | ||
2713 | + } else { | ||
2714 | + kex->gss_host = gss_host; | ||
2715 | + } | ||
2664 | + } | 2716 | + } |
2665 | +#endif | 2717 | +#endif |
2666 | + | 2718 | + |
2667 | xxx_kex = kex; | 2719 | xxx_kex = kex; |
2668 | 2720 | ||
2669 | dispatch_run(DISPATCH_BLOCK, &kex->done, kex); | 2721 | dispatch_run(DISPATCH_BLOCK, &kex->done, kex); |
2670 | @@ -243,6 +295,7 @@ | 2722 | @@ -304,6 +360,7 @@ |
2671 | void input_gssapi_hash(int type, u_int32_t, void *); | 2723 | void input_gssapi_hash(int type, u_int32_t, void *); |
2672 | void input_gssapi_error(int, u_int32_t, void *); | 2724 | void input_gssapi_error(int, u_int32_t, void *); |
2673 | void input_gssapi_errtok(int, u_int32_t, void *); | 2725 | void input_gssapi_errtok(int, u_int32_t, void *); |
@@ -2675,7 +2727,7 @@ Index: b/sshconnect2.c | |||
2675 | #endif | 2727 | #endif |
2676 | 2728 | ||
2677 | void userauth(Authctxt *, char *); | 2729 | void userauth(Authctxt *, char *); |
2678 | @@ -258,6 +311,11 @@ | 2730 | @@ -319,6 +376,11 @@ |
2679 | 2731 | ||
2680 | Authmethod authmethods[] = { | 2732 | Authmethod authmethods[] = { |
2681 | #ifdef GSSAPI | 2733 | #ifdef GSSAPI |
@@ -2687,13 +2739,15 @@ Index: b/sshconnect2.c | |||
2687 | {"gssapi-with-mic", | 2739 | {"gssapi-with-mic", |
2688 | userauth_gssapi, | 2740 | userauth_gssapi, |
2689 | NULL, | 2741 | NULL, |
2690 | @@ -564,19 +622,29 @@ | 2742 | @@ -625,19 +687,31 @@ |
2691 | static u_int mech = 0; | 2743 | static u_int mech = 0; |
2692 | OM_uint32 min; | 2744 | OM_uint32 min; |
2693 | int ok = 0; | 2745 | int ok = 0; |
2694 | + const char *gss_host; | 2746 | + const char *gss_host; |
2695 | + | 2747 | + |
2696 | + if (options.gss_trust_dns) | 2748 | + if (options.gss_server_identity) |
2749 | + gss_host = options.gss_server_identity; | ||
2750 | + else if (options.gss_trust_dns) | ||
2697 | + gss_host = get_canonical_hostname(1); | 2751 | + gss_host = get_canonical_hostname(1); |
2698 | + else | 2752 | + else |
2699 | + gss_host = authctxt->host; | 2753 | + gss_host = authctxt->host; |
@@ -2719,7 +2773,7 @@ Index: b/sshconnect2.c | |||
2719 | ok = 1; /* Mechanism works */ | 2773 | ok = 1; /* Mechanism works */ |
2720 | } else { | 2774 | } else { |
2721 | mech++; | 2775 | mech++; |
2722 | @@ -673,8 +741,8 @@ | 2776 | @@ -734,8 +808,8 @@ |
2723 | { | 2777 | { |
2724 | Authctxt *authctxt = ctxt; | 2778 | Authctxt *authctxt = ctxt; |
2725 | Gssctxt *gssctxt; | 2779 | Gssctxt *gssctxt; |
@@ -2730,7 +2784,7 @@ Index: b/sshconnect2.c | |||
2730 | 2784 | ||
2731 | if (authctxt == NULL) | 2785 | if (authctxt == NULL) |
2732 | fatal("input_gssapi_response: no authentication context"); | 2786 | fatal("input_gssapi_response: no authentication context"); |
2733 | @@ -784,6 +852,48 @@ | 2787 | @@ -845,6 +919,48 @@ |
2734 | xfree(msg); | 2788 | xfree(msg); |
2735 | xfree(lang); | 2789 | xfree(lang); |
2736 | } | 2790 | } |
@@ -2794,7 +2848,7 @@ Index: b/sshd.c | |||
2794 | #ifdef LIBWRAP | 2848 | #ifdef LIBWRAP |
2795 | #include <tcpd.h> | 2849 | #include <tcpd.h> |
2796 | #include <syslog.h> | 2850 | #include <syslog.h> |
2797 | @@ -1586,10 +1590,13 @@ | 2851 | @@ -1590,10 +1594,13 @@ |
2798 | logit("Disabling protocol version 1. Could not load host key"); | 2852 | logit("Disabling protocol version 1. Could not load host key"); |
2799 | options.protocol &= ~SSH_PROTO_1; | 2853 | options.protocol &= ~SSH_PROTO_1; |
2800 | } | 2854 | } |
@@ -2808,7 +2862,7 @@ Index: b/sshd.c | |||
2808 | if (!(options.protocol & (SSH_PROTO_1|SSH_PROTO_2))) { | 2862 | if (!(options.protocol & (SSH_PROTO_1|SSH_PROTO_2))) { |
2809 | logit("sshd: no hostkeys available -- exiting."); | 2863 | logit("sshd: no hostkeys available -- exiting."); |
2810 | exit(1); | 2864 | exit(1); |
2811 | @@ -1918,6 +1925,60 @@ | 2865 | @@ -1922,6 +1929,60 @@ |
2812 | /* Log the connection. */ | 2866 | /* Log the connection. */ |
2813 | verbose("Connection from %.500s port %d", remote_ip, remote_port); | 2867 | verbose("Connection from %.500s port %d", remote_ip, remote_port); |
2814 | 2868 | ||
@@ -2869,7 +2923,7 @@ Index: b/sshd.c | |||
2869 | /* | 2923 | /* |
2870 | * We don't want to listen forever unless the other side | 2924 | * We don't want to listen forever unless the other side |
2871 | * successfully authenticates itself. So we set up an alarm which is | 2925 | * successfully authenticates itself. So we set up an alarm which is |
2872 | @@ -2296,12 +2357,61 @@ | 2926 | @@ -2303,6 +2364,48 @@ |
2873 | 2927 | ||
2874 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = list_hostkey_types(); | 2928 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = list_hostkey_types(); |
2875 | 2929 | ||
@@ -2918,9 +2972,10 @@ Index: b/sshd.c | |||
2918 | /* start key exchange */ | 2972 | /* start key exchange */ |
2919 | kex = kex_setup(myproposal); | 2973 | kex = kex_setup(myproposal); |
2920 | kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server; | 2974 | kex->kex[KEX_DH_GRP1_SHA1] = kexdh_server; |
2921 | kex->kex[KEX_DH_GRP14_SHA1] = kexdh_server; | 2975 | @@ -2310,6 +2413,13 @@ |
2922 | kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; | 2976 | kex->kex[KEX_DH_GEX_SHA1] = kexgex_server; |
2923 | kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; | 2977 | kex->kex[KEX_DH_GEX_SHA256] = kexgex_server; |
2978 | kex->kex[KEX_ECDH_SHA2] = kexecdh_server; | ||
2924 | +#ifdef GSSAPI | 2979 | +#ifdef GSSAPI |
2925 | + if (options.gss_keyex) { | 2980 | + if (options.gss_keyex) { |
2926 | + kex->kex[KEX_GSS_GRP1_SHA1] = kexgss_server; | 2981 | + kex->kex[KEX_GSS_GRP1_SHA1] = kexgss_server; |
@@ -2935,7 +2990,7 @@ Index: b/sshd_config | |||
2935 | =================================================================== | 2990 | =================================================================== |
2936 | --- a/sshd_config | 2991 | --- a/sshd_config |
2937 | +++ b/sshd_config | 2992 | +++ b/sshd_config |
2938 | @@ -71,6 +71,8 @@ | 2993 | @@ -72,6 +72,8 @@ |
2939 | # GSSAPI options | 2994 | # GSSAPI options |
2940 | #GSSAPIAuthentication no | 2995 | #GSSAPIAuthentication no |
2941 | #GSSAPICleanupCredentials yes | 2996 | #GSSAPICleanupCredentials yes |
@@ -2948,7 +3003,7 @@ Index: b/sshd_config.5 | |||
2948 | =================================================================== | 3003 | =================================================================== |
2949 | --- a/sshd_config.5 | 3004 | --- a/sshd_config.5 |
2950 | +++ b/sshd_config.5 | 3005 | +++ b/sshd_config.5 |
2951 | @@ -424,12 +424,40 @@ | 3006 | @@ -423,12 +423,40 @@ |
2952 | The default is | 3007 | The default is |
2953 | .Dq no . | 3008 | .Dq no . |
2954 | Note that this option applies to protocol version 2 only. | 3009 | Note that this option applies to protocol version 2 only. |