Hi.
I just found a patch by Van Dyke, the makers of SecureCRT (for win32) for
openssh that might be interesting for Mandrake?
Patches are applied to this mail.
Chears.
--
Regards // Oden Eriksson - Deserve-IT Networks http://d-srv.com
Check the "Modules For Apache2" status page at:
http://d-srv.com/modules_for_apache2.html
diff -Naur openssh-3.4p1/Makefile.in openssh-3.4p1.oden/Makefile.in
--- openssh-3.4p1/Makefile.in 2002-06-25 23:45:42.000000000 +0000
+++ openssh-3.4p1.oden/Makefile.in 2002-10-09 14:36:44.000000000 +0000
@@ -23,6 +23,7 @@
SSH_PROGRAM=@bindir@/ssh
ASKPASS_PROGRAM=$(libexecdir)/ssh-askpass
SFTP_SERVER=$(libexecdir)/sftp-server
+PUBLICKEY_SERVER=$(libexecdir)/publickey-server
SSH_KEYSIGN=$(libexecdir)/ssh-keysign
RAND_HELPER=$(libexecdir)/ssh-rand-helper
PRIVSEP_PATH=@PRIVSEP_PATH@
@@ -32,6 +33,7 @@
-D_PATH_SSH_PROGRAM=\"$(SSH_PROGRAM)\" \
-D_PATH_SSH_ASKPASS_DEFAULT=\"$(ASKPASS_PROGRAM)\" \
-D_PATH_SFTP_SERVER=\"$(SFTP_SERVER)\" \
+ -D_PATH_PUBLICKEY_SERVER=\"$(PUBLICKEY_SERVER)\" \
-D_PATH_SSH_KEY_SIGN=\"$(SSH_KEYSIGN)\" \
-D_PATH_SSH_PIDDIR=\"$(piddir)\" \
-D_PATH_PRIVSEP_CHROOT_DIR=\"$(PRIVSEP_PATH)\" \
@@ -58,7 +60,7 @@
@NO_SFTP@SFTP_PROGS=sftp-server$(EXEEXT) sftp$(EXEEXT)
-TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keyscan${EXEEXT} ssh-keysign${EXEEXT} ssh-agent$(EXEEXT) scp$(EXEEXT) ssh-rand-helper${EXEEXT} $(SFTP_PROGS)
+TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keyscan${EXEEXT} ssh-keysign${EXEEXT} ssh-agent$(EXEEXT) scp$(EXEEXT) ssh-rand-helper${EXEEXT} $(SFTP_PROGS) publickey-server${EXEEXT}
LIBSSH_OBJS=atomicio.o authfd.o authfile.o bufaux.o buffer.o canohost.o channels.o cipher.o compat.o compress.o crc32.o deattack.o dh.o dispatch.o fatal.o mac.o msg.o hostfile.o key.o kex.o kexdh.o kexgex.o log.o match.o misc.o mpaux.o nchan.o packet.o radix.o rijndael.o entropy.o readpass.o rsa.o scard.o scard-opensc.o ssh-dss.o ssh-rsa.o tildexpand.o ttymodes.o uidswap.o uuencode.o xmalloc.o monitor_wrap.o monitor_fdpass.o
@@ -140,6 +142,9 @@
sftp$(EXEEXT): $(LIBCOMPAT) libssh.a sftp.o sftp-client.o sftp-int.o sftp-common.o sftp-glob.o
$(LD) -o $@ sftp.o sftp-client.o sftp-common.o sftp-int.o sftp-glob.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
+publickey-server$(EXEEXT): $(LIBCOMPAT) libssh.a servconf.o entropy.o auth.o groupaccess.o auth-options.o publickey-server.o
+ $(LD) -o $@ publickey-server.o servconf.o entropy.o auth.o groupaccess.o auth-options.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
+
ssh-rand-helper${EXEEXT}: $(LIBCOMPAT) libssh.a ssh-rand-helper.o
$(LD) -o $@ ssh-rand-helper.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
@@ -232,6 +237,7 @@
$(INSTALL) -m 4711 -s ssh-keysign $(DESTDIR)$(SSH_KEYSIGN)
@NO_SFTP@$(INSTALL) -m 0755 -s sftp $(DESTDIR)$(bindir)/sftp
@NO_SFTP@$(INSTALL) -m 0755 -s sftp-server $(DESTDIR)$(SFTP_SERVER)
+ $(INSTALL) -m 0755 -s publickey-server $(DESTDIR)$(PUBLICKEY_SERVER)
$(INSTALL) -m 644 ssh.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh.1
$(INSTALL) -m 644 scp.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/scp.1
$(INSTALL) -m 644 ssh-add.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-add.1
@@ -330,6 +336,7 @@
-rm -f $(DESTDIR)$(bindir)/sftp$(EXEEXT)
-rm -f $(DESTDIR)$(sbindir)/sshd$(EXEEXT)
-rm -r $(DESTDIR)$(SFTP_SERVER)$(EXEEXT)
+ -rm -r $(DESTDIR)$(PUBLICKEY_SERVER)$(EXEEXT)
-rm -f $(DESTDIR)$(SSH_KEYSIGN)$(EXEEXT)
-rm -f $(DESTDIR)$(RAND_HELPER)$(EXEEXT)
-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh.1
diff -Naur openssh-3.4p1/publickey-server.c openssh-3.4p1.oden/publickey-server.c
--- openssh-3.4p1/publickey-server.c 1970-01-01 00:00:00.000000000 +0000
+++ openssh-3.4p1.oden/publickey-server.c 2002-10-09 14:36:44.000000000 +0000
@@ -0,0 +1,611 @@
+/*
+ * publickey-server for OpenSSH -- August 02, 2002
+ *
+ * Copyright � 1995-2002 VanDyke Software, Inc.
+ * All rights reserved.
+ *
+ * Portions Copyright (c) 2000, 2001, 2002 Markus Friedl. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "includes.h"
+RCSID("$OpenBSD: publickey-server.c,v 1.33 2002/06/30 00:00:00 markus Exp $");
+
+#include "buffer.h"
+#include "bufaux.h"
+#include "getput.h"
+#include "log.h"
+#include "xmalloc.h"
+#include "key.h"
+#include "servconf.h"
+#include "pathnames.h"
+#include "auth.h"
+
+/* helper */
+#define get_int64() buffer_get_int64(&iqueue);
+#define get_int() buffer_get_int(&iqueue);
+#define get_string(lenp) buffer_get_string(&iqueue, lenp);
+#define TRACE debug
+
+#ifdef HAVE___PROGNAME
+extern char *__progname;
+#else
+char *__progname;
+#endif
+
+FILE *stream = 0;
+
+/* input and output queue */
+Buffer iqueue;
+Buffer oqueue;
+
+/* Version of client */
+int version;
+
+/* Server configuration file */
+ServerOptions options;
+
+/* Name of the server configuration file. */
+char* config_file_name = _PATH_SERVER_CONFIG_FILE;
+
+/* We don't need this, but servconf.o requires it */
+int IPv4or6 = AF_UNSPEC;
+
+/* Who are we */
+uid_t uid;
+pid_t pid;
+struct passwd* pw;
+
+enum
+{
+ PK_SUCCESS = 0,
+ PK_ACCESS_DENIED = 1,
+ PK_STORAGE_EXCEEDED = 2,
+ PK_REQUEST_NOT_SUPPORTED= 3,
+ PK_KEY_NOT_FOUND = 4,
+ PK_KEY_NOT_SUPPORTED = 5,
+ PK_GENERAL_FAILURE = 6
+};
+
+static void
+LogToFile(FILE* stream, char* szFormat, ...)
+{
+#ifdef DEBUG_LOGTOFILE
+ va_list args;
+ va_start(args, szFormat);
+ vfprintf(stream, szFormat, args);
+ fflush(stream);
+#endif
+}
+
+/* send replies */
+
+static void
+send_msg(Buffer *m)
+{
+ int mlen = buffer_len(m);
+
+ LogToFile(stream, "send_msg()\n");
+ buffer_put_int(&oqueue, mlen);
+ buffer_append(&oqueue, buffer_ptr(m), mlen);
+ buffer_consume(m, mlen);
+}
+
+static void
+send_version(u_int32_t version)
+{
+ Buffer msg;
+ LogToFile(stream, "send_version()\n");
+ buffer_init(&msg);
+ buffer_put_cstring(&msg, "version");
+ buffer_put_int(&msg, version);
+ send_msg(&msg);
+ buffer_free(&msg);
+}
+
+static void
+send_status(u_int32_t error, char* szMessage)
+{
+ Buffer msg;
+ buffer_init(&msg);
+ LogToFile(stream, "send_status()\n");
+ buffer_put_cstring(&msg, "status");
+ buffer_put_int(&msg, error);
+ buffer_put_cstring(&msg, szMessage);
+ buffer_put_cstring(&msg, "");
+ send_msg(&msg);
+ buffer_free(&msg);
+}
+
+static void
+send_publickey(Key* k, const char* szComment)
+{
+ Buffer msg;
+
+ u_char* blob;
+ u_int bloblen;
+
+ LogToFile(stream, "send_publickey() szComment=%s\n", szComment);
+
+ if ( key_to_blob(k, &blob, &bloblen) == 0 )
+ {
+ return;
+ }
+
+ buffer_init(&msg);
+ buffer_put_cstring(&msg, "publickey");
+ buffer_put_cstring(&msg, szComment);
+ buffer_put_cstring(&msg, key_ssh_name(k));
+ buffer_put_string(&msg, blob, bloblen);
+ send_msg(&msg);
+ buffer_free(&msg);
+ xfree(blob);
+
+ LogToFile(stream, "send_publickey() sent\n");
+}
+
+/* parse incoming */
+
+static void
+process_version(void)
+{
+ version = buffer_get_int(&iqueue);
+ LogToFile(stream, "process_version() version=%d\n", version);
+}
+
+static int
+key_from_line(char line[8192], Key** ppKey, char** ppszComment)
+{
+ char* cp;
+ char* options = NULL;
+
+ *ppKey = 0;
+ *ppszComment = 0;
+
+ LogToFile(stream, "key_from_line()\n");
+ /* Skip leading whitespace, empty and comment lines. */
+ for (cp = line; *cp == ' ' || *cp == '\t'; cp++)
+ ;
+
+ if ( ! *cp || *cp == '\n' || *cp == '#' )
+ return 0;
+
+ *ppKey = key_new(KEY_UNSPEC);
+ if (key_read(*ppKey, &cp) != 1) {
+ /* no key? check if there are options for this key */
+ int quoted = 0;
+ LogToFile(stream, "key_from_line() user_key_allowed: check options: '%s'\n", cp);
+ options = cp;
+ for (; *cp && (quoted || (*cp != ' ' && *cp != '\t')); cp++) {
+ if (*cp == '\\' && cp[1] == '"')
+ cp++; /* Skip both */
+ else if (*cp == '"')
+ quoted = !quoted;
+ }
+
+ /* Skip remaining whitespace. */
+ for (; *cp == ' ' || *cp == '\t'; cp++)
+ ;
+ if (key_read(*ppKey, &cp) != 1) {
+ key_free(*ppKey);
+ *ppKey = 0;
+
+ /* still no key? advance to next line*/
+ return 0;
+ }
+ }
+
+ *ppszComment = cp;
+ return 1;
+}
+
+static int
+list_file(const char* szFile)
+{
+ char line[8192];
+ FILE* f;
+
+ LogToFile(stream, "list_file() szFile=%s\n", szFile);
+
+ f = fopen(szFile, "r");
+ if ( ! f )
+ return 0;
+
+ while (fgets(line, sizeof(line), f))
+ {
+ Key* pKey = 0;
+ char* szComment = 0;
+
+ LogToFile(stream, "list_file() got line\n");
+ if ( ! key_from_line(line, &pKey, &szComment) )
+ continue;
+
+ send_publickey(pKey, szComment);
+ key_free(pKey);
+ }
+
+ fclose(f);
+ return 1;
+}
+
+static void
+process_list(void)
+{
+ char* file;
+ int bSuccess;
+
+ LogToFile(stream, "process_list(): authorized_keys_file\n");
+ file = authorized_keys_file(pw);
+ bSuccess = list_file(file);
+ xfree(file);
+
+ LogToFile(stream, "process_listi(): authorized_keys_file2\n");
+ file = authorized_keys_file2(pw);
+ bSuccess = list_file(file) || bSuccess;
+ xfree(file);
+
+ LogToFile(stream, "process_list() success\n");
+ send_status(PK_SUCCESS, "List complete");
+}
+
+static int
+get_key(Key** pKey)
+{
+ char* szType;
+ int pkType;
+
+ u_char* pkblob;
+ u_int blen;
+
+ LogToFile(stream, "get_key()\n");
+ szType = get_string(NULL);
+ pkType = key_type_from_name(szType);
+ xfree(szType);
+ if ( pkType == KEY_UNSPEC )
+ {
+ send_status(PK_KEY_NOT_SUPPORTED, "Key type not supported.");
+ return 0;
+ }
+
+ pkblob = get_string(&blen);
+ *pKey = key_from_blob(pkblob, blen);
+ xfree(pkblob);
+
+ if ( ! *pKey )
+ {
+ send_status(PK_GENERAL_FAILURE, "Could not decode key; key is corrupt.");
+ return 0;
+ }
+
+ return 1;
+}
+
+static void
+process_add(void)
+{
+ char* file;
+ char* szComment;
+ Key* key;
+
+ FILE* f = 0;
+
+ LogToFile(stream, "process_add()\n");
+ szComment = get_string(NULL);
+ if ( ! get_key(&key) )
+ {
+ /* status has been sent */
+ xfree(szComment);
+ return;
+ }
+
+ file = authorized_keys_file(pw);
+
+ /* Backup to the first / */
+ {
+ char* sz;
+
+ sz = strrchr(file, '/');
+ if ( sz )
+ {
+ *sz = '\0';
+ mkdir(file, 0700);
+ *sz = '/';
+ }
+ }
+
+ f = fopen(file, "a+");
+ xfree(file);
+
+ if ( ! f )
+ {
+ if ( errno == EACCES )
+ send_status(PK_ACCESS_DENIED, "Access is denied to the authorized_keys file.");
+ else
+ send_status(PK_GENERAL_FAILURE, "Could not open authorize_keys file.");
+ xfree(szComment);
+ key_free(key);
+ return;
+ }
+
+ key_write(key, f);
+ key_free(key);
+
+ fprintf(f, " %s\n", szComment);
+ xfree(szComment);
+ fclose(f);
+
+ send_status(PK_SUCCESS, "Key added.");
+}
+
+static int
+remove_from_file(Key* pRemoveKey, const char* szFile)
+{
+ char line[8192];
+ char* szTmpFile;
+
+ FILE* fInput = 0;
+ int nTmpFd = 0;
+
+ int bFoundMatch = 0;
+
+ LogToFile(stream, "remove_from_file()\n");
+ fInput = fopen(szFile, "r");
+ if ( ! fInput )
+ return 0;
+
+ szTmpFile = xmalloc(strlen(szFile) + 32);
+ sprintf(szTmpFile, "%s-XXXXXX", szFile);
+
+ nTmpFd = mkstemp(szTmpFile);
+ if ( nTmpFd == -1 )
+ return -1;
+
+ while (fgets(line, sizeof(line), fInput))
+ {
+ int nLineLength = strlen(line);
+
+ Key* pKey = 0;
+ char* szComment = 0;
+ if ( ! key_from_line(line, &pKey, &szComment) )
+ {
+ write(nTmpFd, line, nLineLength);
+ continue;
+ }
+
+ if ( ! key_equal(pKey, pRemoveKey) )
+ write(nTmpFd, line, nLineLength);
+ else
+ bFoundMatch = 1;
+
+ key_free(pKey);
+ }
+
+ if ( ! bFoundMatch )
+ {
+ unlink(szTmpFile);
+ }
+ else
+ {
+ unlink(szFile);
+ link(szTmpFile, szFile);
+ unlink(szTmpFile);
+ }
+
+ close(nTmpFd);
+ fclose(fInput);
+
+ return bFoundMatch;
+}
+
+static void
+process_remove(void)
+{
+ char* szOrigFile;
+ Key* key;
+
+ int bSuccess;
+
+ LogToFile(stream, "process_remove()\n");
+ /* get_key() sends status if it fails */
+ if ( ! get_key(&key) )
+ return;
+
+ szOrigFile = authorized_keys_file(pw);
+ bSuccess = remove_from_file(key, szOrigFile);
+ xfree(szOrigFile);
+
+ if ( bSuccess != -1 )
+ {
+ szOrigFile = authorized_keys_file2(pw);
+ bSuccess = remove_from_file(key, szOrigFile) || bSuccess;
+ xfree(szOrigFile);
+ }
+
+ if ( bSuccess == -1 )
+ send_status(PK_GENERAL_FAILURE, "Couldn't create temp file.");
+ else if ( bSuccess == 1 )
+ send_status(PK_SUCCESS, "All instances of publickey were removed.");
+ else /* bSuccess == 0 */
+ send_status(PK_KEY_NOT_FOUND, "Could not find publickey.");
+
+ key_free(key);
+}
+
+static void
+process_command(void)
+{
+ LogToFile(stream, "process_command()\n");
+}
+
+/* stolen from sftp-server */
+static void
+process_one_packet(void)
+{
+ u_int msg_len;
+ char* szType;
+ u_char *cp;
+
+ LogToFile(stream, "process() length=%d\n", buffer_len(&iqueue));
+
+ cp = buffer_ptr(&iqueue);
+ msg_len = GET_32BIT(cp);
+ if (msg_len > 256 * 1024) {
+ error("bad message ");
+ LogToFile(stream, "process() exit1\n");
+ fclose(stream);
+ exit(11);
+ }
+ if (buffer_len(&iqueue) < msg_len + 4)
+ return;
+ buffer_consume(&iqueue, 4);
+
+ szType = get_string(NULL);
+ LogToFile(stream, "process() szType=%s\n", szType);
+ if (strcmp(szType, "version") == 0)
+ process_version();
+ else if (strcmp(szType, "list") == 0)
+ process_list();
+ else if (strcmp(szType, "add") == 0)
+ process_add();
+ else if (strcmp(szType, "remove") == 0)
+ process_remove();
+ else if (strcmp(szType, "command") == 0)
+ process_command();
+ else
+ send_status(PK_REQUEST_NOT_SUPPORTED, "The requested operation is not supported.");
+}
+
+static void
+process(void)
+{
+ while( buffer_len(&iqueue) > 5 )
+ process_one_packet();
+}
+
+int
+main(int ac, char **av)
+{
+ fd_set *rset, *wset;
+ int in, out, max;
+ ssize_t len, olen, set_size;
+
+ /* XXX should use getopt */
+
+ __progname = get_progname(av[0]);
+
+ uid = getuid();
+ pid = getpid();
+ pw = getpwuid(uid);
+
+#ifdef DEBUG_LOGTOFILE
+ stream = fopen("/tmp/publickey-subsystem.log", "a+");
+#endif
+ LogToFile(stream, "\nmain() begin\n");
+
+#ifdef DEBUG_PUBLICKEY_SERVER
+ log_init("publickey-server", SYSLOG_LEVEL_DEBUG1, SYSLOG_FACILITY_AUTH, 0);
+#endif
+
+ in = dup(STDIN_FILENO);
+ out = dup(STDOUT_FILENO);
+
+#ifdef HAVE_CYGWIN
+ setmode(in, O_BINARY);
+ setmode(out, O_BINARY);
+#endif
+
+ max = 0;
+ if (in > max)
+ max = in;
+ if (out > max)
+ max = out;
+
+ buffer_init(&iqueue);
+ buffer_init(&oqueue);
+
+ set_size = howmany(max + 1, NFDBITS) * sizeof(fd_mask);
+ rset = (fd_set *)xmalloc(set_size);
+ wset = (fd_set *)xmalloc(set_size);
+
+ initialize_server_options(&options);
+ read_server_config(&options, config_file_name);
+
+ /* Fill in default values for those options not explicitly set. */
+ fill_default_server_options(&options);
+
+ send_version(1);
+
+ for (;;) {
+ LogToFile(stream, "main() loop\n");
+ memset(rset, 0, set_size);
+ memset(wset, 0, set_size);
+
+ FD_SET(in, rset);
+ olen = buffer_len(&oqueue);
+ if (olen > 0)
+ FD_SET(out, wset);
+
+ if (select(max+1, rset, wset, NULL, NULL) < 0) {
+ if (errno == EINTR)
+ continue;
+ LogToFile(stream, "main() exit1\n");
+ fclose(stream);
+ exit(2);
+ }
+
+ /* copy stdin to iqueue */
+ if (FD_ISSET(in, rset)) {
+ char buf[4*4096];
+ len = read(in, buf, sizeof buf);
+ if (len == 0) {
+ debug("read eof");
+ LogToFile(stream, "main() exit2\n");
+ fclose(stream);
+ exit(0);
+ } else if (len < 0) {
+ error("read error");
+ LogToFile(stream, "main() exit3\n");
+ fclose(stream);
+ exit(1);
+ } else {
+ buffer_append(&iqueue, buf, len);
+ }
+ }
+ /* send oqueue to stdout */
+ if (FD_ISSET(out, wset)) {
+ len = write(out, buffer_ptr(&oqueue), olen);
+ if (len < 0) {
+ error("write error");
+ LogToFile(stream, "main() exit4\n");
+ fclose(stream);
+ exit(1);
+ } else {
+ buffer_consume(&oqueue, len);
+ }
+ }
+ /* process requests from client */
+ process();
+ }
+ LogToFile(stream, "main() end");
+#ifdef DEBUG_LOGTOFILE
+ fclose(stream);
+#endif
+}
diff -Naur openssh-3.4p1/README.publickey-server openssh-3.4p1.oden/README.publickey-server
--- openssh-3.4p1/README.publickey-server 1970-01-01 00:00:00.000000000 +0000
+++ openssh-3.4p1.oden/README.publickey-server 2002-10-09 14:36:44.000000000 +0000
@@ -0,0 +1,18 @@
+* publickey-server for OpenSSH -- August 02, 2002
+*
+* Copyright � 1995-2002 VanDyke Software, Inc.
+* All rights reserved.
+*
+
+The following files are designed to work with OpenSSH3.4p1.
+1) Place in the build directory for OpenSSH (replacing any
+ existing files)
+2) run "./configure"
+3) run "make install"
+
+Makefile.in - replacement for the configure makefile
+
+publickey-server.c - code for the public-key subsystem
+
+sshd_config - sshd configuration file that includes the
+ public-key subsystem
\ No newline at end of file
diff -Naur openssh-3.4p1/sshd_config openssh-3.4p1.oden/sshd_config
--- openssh-3.4p1/sshd_config 2002-06-21 01:11:36.000000000 +0000
+++ openssh-3.4p1.oden/sshd_config 2002-10-09 14:36:44.000000000 +0000
@@ -90,3 +90,4 @@
# override default of no subsystems
Subsystem sftp /usr/libexec/sftp-server
+Subsystem [EMAIL PROTECTED] /usr/libexec/publickey-server
--- openssh.spec 2002-09-11 19:59:25.000000000 +0000
+++ openssh.spec.oden 2002-10-09 14:42:21.000000000 +0000
@@ -11,7 +11,7 @@
%define name openssh
%define version 3.4p1
-%define release 4mdk
+%define release 5mdk
Summary: OpenSSH free Secure Shell (SSH) implementation
Name: %{name}
@@ -32,6 +32,8 @@
Patch3: openssh-3.1p1-check-only-ssl-version.patch.bz2
# no longer needed?
Patch4: x11-ssh-askpass-1.2.4.1-fix-Imakefile.patch.bz2
+# http://www.vandyke.com/download/os/pks_ossh.html
+Patch5: openssh-3.4p1-publickey-server.patch.bz2
License: BSD
Group: Networking/Remote access
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
@@ -168,6 +170,9 @@
# patch to x11-ssh-askpass (no longer needed?)
#%patch4 -p1 -b .imake
+# http://www.vandyke.com/download/os/pks_ossh.html
+%patch5 -p1
+
%build
%serverbuild
@@ -322,6 +327,7 @@
%defattr(-,root,root)
%{_sbindir}/sshd
%{_libdir}/ssh/sftp-server
+%{_libdir}/ssh/publickey-server
%{_mandir}/man5/sshd_config.5*
%{_mandir}/man8/sshd.8*
%{_mandir}/man8/sftp-server.8*
@@ -346,6 +352,9 @@
%attr(0755,root,root) %config(noreplace) %{_sysconfdir}/profile.d/gnome-ssh-askpass.*
%changelog
+* Wed Oct 09 2002 Oden Erikkson <[EMAIL PROTECTED]> 3.4p1-5mdk
+- added rediffed P5 by Van Dyke
+
* Wed Sep 11 2002 Vincent Danen <[EMAIL PROTECTED]> 3.4p1-4mdk
- openssh-server: PreReq: rpm-helper
- fix builds for old distribs (remove support for 7.1)