diff -ur openssh-3.4p1/servconf.c openssh-3.4p1-1/servconf.c
--- openssh-3.4p1/servconf.c	Mon Jun 24 23:22:04 2002
+++ openssh-3.4p1-1/servconf.c	Wed Aug 21 10:11:36 2002
@@ -122,7 +122,8 @@
 	options->client_alive_count_max = -1;
 	options->authorized_keys_file = NULL;
 	options->authorized_keys_file2 = NULL;
-
+	options->hide_version_information = -1;
+	options->version_string = NULL;
 	/* Needs to be accessable in many places */
 	use_privsep = -1;
 }
@@ -253,6 +254,12 @@
 	if (options->authorized_keys_file == NULL)
 		options->authorized_keys_file = _PATH_SSH_USER_PERMITTED_KEYS;
 
+	if (options->hide_version_information == -1)
+		options->hide_version_information = 0;
+
+	if (options->version_string == NULL)
+		options->version_string = "OpenSSH";
+
 	/* Turn privilege separation on by default */
 	if (use_privsep == -1)
 		use_privsep = 1;
@@ -298,7 +305,7 @@
 	sBanner, sVerifyReverseMapping, sHostbasedAuthentication,
 	sHostbasedUsesNameFromPacketOnly, sClientAliveInterval,
 	sClientAliveCountMax, sAuthorizedKeysFile, sAuthorizedKeysFile2,
-	sUsePrivilegeSeparation,
+	sUsePrivilegeSeparation,sHideVersionInformation,sVersionString,
 	sDeprecated
 } ServerOpCodes;
 
@@ -376,6 +383,8 @@
 	{ "authorizedkeysfile", sAuthorizedKeysFile },
 	{ "authorizedkeysfile2", sAuthorizedKeysFile2 },
 	{ "useprivilegeseparation", sUsePrivilegeSeparation},
+	{ "hideversioninformation", sHideVersionInformation},
+	{ "versionstring", sVersionString},
 	{ NULL, sBadOption }
 };
 
@@ -901,6 +910,18 @@
 		intptr = &options->client_alive_count_max;
 		goto parse_int;
 
+	case sHideVersionInformation:
+		intptr = &options->hide_version_information;
+		goto parse_flag;
+	
+	case sVersionString:	
+		arg = strdelim(&cp);
+		if (!arg || *arg == '\0')
+			fatal("%s line %d: Missing argument.", filename, linenum);
+		if (options->version_string == NULL)
+			options->version_string = xstrdup(arg);
+		break;
+
 	case sDeprecated:
 		log("%s line %d: Deprecated option %s",
 		    filename, linenum, arg);
diff -ur openssh-3.4p1/servconf.h openssh-3.4p1-1/servconf.h
--- openssh-3.4p1/servconf.h	Thu Jun 20 21:09:47 2002
+++ openssh-3.4p1-1/servconf.h	Wed Aug 21 09:41:33 2002
@@ -131,6 +131,14 @@
 	char   *authorized_keys_file;	/* File containing public keys */
 	char   *authorized_keys_file2;
 	int	pam_authentication_via_kbd_int;
+
+	/*
+     	 * Hide the version information from the client.
+ 	 * Also, allow the server to choose the version
+	 * string that gets presented to the client.
+	 */
+	int	hide_version_information; 
+  	char   *version_string;
 }       ServerOptions;
 
 void	 initialize_server_options(ServerOptions *);
diff -ur openssh-3.4p1/sshd.c openssh-3.4p1-1/sshd.c
--- openssh-3.4p1/sshd.c	Tue Jun 25 19:24:19 2002
+++ openssh-3.4p1-1/sshd.c	Wed Aug 21 09:59:00 2002
@@ -371,7 +371,13 @@
 		major = PROTOCOL_MAJOR_1;
 		minor = PROTOCOL_MINOR_1;
 	}
-	snprintf(buf, sizeof buf, "SSH-%d.%d-%.100s\n", major, minor, SSH_VERSION);
+
+        /* We may want to hide the version string from clients */
+        if (options.hide_version_information) {
+	   snprintf(buf, sizeof buf, "SSH-%d.%d-%.100s\n", major, minor, options.version_string);
+        } else {
+	   snprintf(buf, sizeof buf, "SSH-%d.%d-%.100s\n", major, minor, SSH_VERSION);
+        }
 	server_version_string = xstrdup(buf);
 
 	if (client_version_string == NULL) {
diff -ur openssh-3.4p1/sshd_config openssh-3.4p1-1/sshd_config
--- openssh-3.4p1/sshd_config	Thu Jun 20 21:11:36 2002
+++ openssh-3.4p1-1/sshd_config	Wed Aug 21 10:18:12 2002
@@ -90,3 +90,8 @@
 
 # override default of no subsystems
 Subsystem	sftp	/usr/libexec/sftp-server
+
+# Hide the version string from clients.  If VersionString 
+# not set then the default of OpenSSH will be used.
+#HideVersionInformation no
+#VersionString Surely_you_must_be_joking!
