Yes you could just use rdist -p SSLrsh, but you might get bored
typing in your passwd a dozen times for a multi-host update.

As you can see, the mods are pretty simple.

--sjg

*** rdist.c.orig	Mon Aug 26 11:56:17 1996
--- rdist.c	Mon Aug 26 12:16:53 1996
***************
*** 60,69 ****
  struct group   *gr = NULL;			/* Static area for getgrent */
  char		localmsglist[] = "stdout=all:notify=all:syslog=nerror,ferror";
  char   	       *remotemsglist = NULL;
! char		optchars[] = "A:a:bcd:DFf:hil:L:M:m:NnOo:p:P:qRrst:Vvwxy";
  FILE   	       *opendist();
  char	       *path_rdistd = _PATH_RDISTD;
  char	       *path_remsh = _PATH_REMSH;
  
  /*
   * Add a hostname to the host list
--- 60,72 ----
  struct group   *gr = NULL;			/* Static area for getgrent */
  char		localmsglist[] = "stdout=all:notify=all:syslog=nerror,ferror";
  char   	       *remotemsglist = NULL;
! char		optchars[] = "A:a:bcd:DFf:hil:L:M:m:NnOo:p:P:qRrst:Vvwxyz:";
  FILE   	       *opendist();
  char	       *path_rdistd = _PATH_RDISTD;
  char	       *path_remsh = _PATH_REMSH;
+ #ifdef USE_SSL
+ int use_ssl = 0;
+ #endif
  
  /*
   * Add a hostname to the host list
***************
*** 99,104 ****
--- 102,113 ----
  	register char *cp;
  	int cmdargs = 0;
  	int c;
+ #ifdef USE_SSL
+ 	char		*cipher_list = 0;
+ 	char		*cert_file = 0;
+ 	char		*key_file = 0;
+ 	int		verify_flag = 0;	/* We don't care about server auth */
+ #endif
  
  	/*
  	 * We initialize progname here instead of init() because
***************
*** 147,154 ****
--- 156,187 ----
  		fatalerr("This version of rdist should not be installed setuid.");
  #endif	/* DIRECT_RCMD */
  
+ #ifdef USE_SSL
+ 	if (strstr(progname, "SSL")) {
+ 		use_ssl = 1;
+ 	}
+ #endif
+ 
  	while ((c = getopt(argc, argv, optchars)) != -1)
  		switch (c) {
+ #ifdef USE_SSL
+ 
+ #define OPTARG_VAL(str, cp, key) ((cp = strchr(str, '=')) && strncmp(str, key, cp - str) == 0 && ++cp)
+ 		case 'z':
+ 			use_ssl = 1;
+ 			/*
+ 			 * for comaptability with SSLtelnet
+ 			 */
+ 			if (OPTARG_VAL(optarg, cp, "cert"))
+ 				cert_file = cp;
+ 			else if (OPTARG_VAL(optarg, cp, "cipher"))
+ 				cipher_list = cp;
+ 			else if (OPTARG_VAL(optarg, cp, "key"))
+ 				key_file = cp;
+ 			else if (OPTARG_VAL(optarg, cp, "verify"))
+ 				verify_flag = atoi(cp);
+ 			break;
+ #endif /* USE_SSL */
  		case 'l':
  			if (cp = msgparseopts(optarg, TRUE)) {
  				error("Bad log option \"%s\": %s.", optarg,cp);
***************
*** 284,289 ****
--- 317,328 ----
        if (nflag)
                do_fork = 0;
  
+ #ifdef USE_SSL
+       setMyId(argv[0]);
+       if (use_ssl != 0 &&
+           sslc_init(cert_file, key_file, cipher_list, verify_flag, 1) < 0)
+               exit(1);
+ #endif
        if (cmdargs)
                docmdargs(realargc - optind, &realargv[optind]);
        else {
*** rshrcmd.c.old	Tue Dec 12 11:20:56 1995
--- rshrcmd.c	Wed Jun 19 02:10:47 1996
***************
*** 36,41 ****
--- 36,54 ----
  	struct hostent  *hp;
  	int             sp[2];
  
+ #ifdef USE_SSL
+ 	extern int use_ssl;
+ 	
+ 	/*
+ 	 * If we are rdist'ing to "localhost" as the same user
+ 	 * as we are, then avoid running remote shell for efficiency.
+ 	 */
+ 	if (use_ssl && (strncmp(*ahost, "localhost", 9) ||
+ 	    strcmp(luser, ruser))) {
+ 		/* not local or not same user */
+ 		return ssl_rcmd(ahost, port, luser, ruser, cmd, fd2p);
+ 	}
+ #endif
  	/* insure that we are indeed being used as we thought. */
  	if (fd2p != 0)
  		return -1;
