зеркало из https://github.com/Azure/sonic-openssh.git
Add DebianBanner server configuration option
Setting this to "no" causes sshd to omit the Debian revision from its initial protocol handshake, for those scared by package-versioning.patch. Bug-Debian: http://bugs.debian.org/562048 Forwarded: not-needed Last-Update: 2021-11-05 Patch-Name: debian-banner.patch
This commit is contained in:
Родитель
af88ce7af9
Коммит
9221739b56
5
kex.c
5
kex.c
|
@ -1230,7 +1230,7 @@ send_error(struct ssh *ssh, char *msg)
|
|||
*/
|
||||
int
|
||||
kex_exchange_identification(struct ssh *ssh, int timeout_ms,
|
||||
const char *version_addendum)
|
||||
int debian_banner, const char *version_addendum)
|
||||
{
|
||||
int remote_major, remote_minor, mismatch, oerrno = 0;
|
||||
size_t len, i, n;
|
||||
|
@ -1248,7 +1248,8 @@ kex_exchange_identification(struct ssh *ssh, int timeout_ms,
|
|||
if (version_addendum != NULL && *version_addendum == '\0')
|
||||
version_addendum = NULL;
|
||||
if ((r = sshbuf_putf(our_version, "SSH-%d.%d-%.100s%s%s\r\n",
|
||||
PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE,
|
||||
PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2,
|
||||
debian_banner ? SSH_RELEASE : SSH_RELEASE_MINIMUM,
|
||||
version_addendum == NULL ? "" : " ",
|
||||
version_addendum == NULL ? "" : version_addendum)) != 0) {
|
||||
oerrno = errno;
|
||||
|
|
2
kex.h
2
kex.h
|
@ -193,7 +193,7 @@ char *kex_names_cat(const char *, const char *);
|
|||
int kex_assemble_names(char **, const char *, const char *);
|
||||
int kex_gss_names_valid(const char *);
|
||||
|
||||
int kex_exchange_identification(struct ssh *, int, const char *);
|
||||
int kex_exchange_identification(struct ssh *, int, int, const char *);
|
||||
|
||||
struct kex *kex_new(void);
|
||||
int kex_ready(struct ssh *, char *[PROPOSAL_MAX]);
|
||||
|
|
|
@ -199,6 +199,7 @@ initialize_server_options(ServerOptions *options)
|
|||
options->fingerprint_hash = -1;
|
||||
options->disable_forwarding = -1;
|
||||
options->expose_userauth_info = -1;
|
||||
options->debian_banner = -1;
|
||||
}
|
||||
|
||||
/* Returns 1 if a string option is unset or set to "none" or 0 otherwise. */
|
||||
|
@ -453,6 +454,8 @@ fill_default_server_options(ServerOptions *options)
|
|||
options->expose_userauth_info = 0;
|
||||
if (options->sk_provider == NULL)
|
||||
options->sk_provider = xstrdup("internal");
|
||||
if (options->debian_banner == -1)
|
||||
options->debian_banner = 1;
|
||||
|
||||
assemble_algorithms(options);
|
||||
|
||||
|
@ -530,6 +533,7 @@ typedef enum {
|
|||
sStreamLocalBindMask, sStreamLocalBindUnlink,
|
||||
sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding,
|
||||
sExposeAuthInfo, sRDomain, sPubkeyAuthOptions, sSecurityKeyProvider,
|
||||
sDebianBanner,
|
||||
sDeprecated, sIgnore, sUnsupported
|
||||
} ServerOpCodes;
|
||||
|
||||
|
@ -700,6 +704,7 @@ static struct {
|
|||
{ "rdomain", sRDomain, SSHCFG_ALL },
|
||||
{ "casignaturealgorithms", sCASignatureAlgorithms, SSHCFG_ALL },
|
||||
{ "securitykeyprovider", sSecurityKeyProvider, SSHCFG_GLOBAL },
|
||||
{ "debianbanner", sDebianBanner, SSHCFG_GLOBAL },
|
||||
{ NULL, sBadOption, 0 }
|
||||
};
|
||||
|
||||
|
@ -2479,6 +2484,10 @@ process_server_config_line_depth(ServerOptions *options, char *line,
|
|||
*charptr = xstrdup(arg);
|
||||
break;
|
||||
|
||||
case sDebianBanner:
|
||||
intptr = &options->debian_banner;
|
||||
goto parse_flag;
|
||||
|
||||
case sDeprecated:
|
||||
case sIgnore:
|
||||
case sUnsupported:
|
||||
|
|
|
@ -232,6 +232,8 @@ typedef struct {
|
|||
int expose_userauth_info;
|
||||
u_int64_t timing_secret;
|
||||
char *sk_provider;
|
||||
|
||||
int debian_banner;
|
||||
} ServerOptions;
|
||||
|
||||
/* Information about the incoming connection as used by Match */
|
||||
|
|
|
@ -1560,7 +1560,7 @@ ssh_login(struct ssh *ssh, Sensitive *sensitive, const char *orighost,
|
|||
lowercase(host);
|
||||
|
||||
/* Exchange protocol version identification strings with the server. */
|
||||
if ((r = kex_exchange_identification(ssh, timeout_ms, NULL)) != 0)
|
||||
if ((r = kex_exchange_identification(ssh, timeout_ms, 1, NULL)) != 0)
|
||||
sshpkt_fatal(ssh, r, "banner exchange");
|
||||
|
||||
/* Put the connection into non-blocking mode. */
|
||||
|
|
2
sshd.c
2
sshd.c
|
@ -2228,7 +2228,7 @@ main(int ac, char **av)
|
|||
if (!debug_flag)
|
||||
alarm(options.login_grace_time);
|
||||
|
||||
if ((r = kex_exchange_identification(ssh, -1,
|
||||
if ((r = kex_exchange_identification(ssh, -1, options.debian_banner,
|
||||
options.version_addendum)) != 0)
|
||||
sshpkt_fatal(ssh, r, "banner exchange");
|
||||
|
||||
|
|
|
@ -546,6 +546,11 @@ or
|
|||
.Cm no .
|
||||
The default is
|
||||
.Cm yes .
|
||||
.It Cm DebianBanner
|
||||
Specifies whether the distribution-specified extra version suffix is
|
||||
included during initial protocol handshake.
|
||||
The default is
|
||||
.Cm yes .
|
||||
.It Cm DenyGroups
|
||||
This keyword can be followed by a list of group name patterns, separated
|
||||
by spaces.
|
||||
|
|
Загрузка…
Ссылка в новой задаче