Patch to allow DSA as well as RSA identities to be specified on the command line

Markus Friedl Markus.Friedl at informatik.uni-erlangen.de
Thu Dec 21 12:01:13 EST 2000


thanks, but 2.2.0 is obsolete. recent openssh versions support -i
for ssh1 RSA and ssh2 RSA/DSA keys.

On Thu, Dec 21, 2000 at 11:17:09AM +1100, Nigel Williams wrote:
> This patch allows DSA identities to be specified on the command
> line. Previously, only RSA identities were allowed.
> 
> ------------------------------------------------------------------------
> diff -U2 openssh-2.2.0p1/ssh.0 openssh-2.2.0p1.nigelw/ssh.0
> --- openssh-2.2.0p1/ssh.0	Sat Sep  2 10:08:46 2000
> +++ openssh-2.2.0p1.nigelw/ssh.0	Thu Dec 21 10:53:07 2000
> @@ -224,5 +224,5 @@
>       -g      Allows remote hosts to connect to local forwarded ports.
>  
> -     -i identity_file
> +     -i rsa_identity_file
>               Selects the file from which the identity (private key) for RSA
>               authentication is read.  Default is $HOME/.ssh/identity in the
> @@ -230,4 +230,12 @@
>               per-host basis in the configuration file.  It is possible to have
>               multiple -i options (and multiple identities specified in config-
> +             uration files).
> +
> +     -I dsa_identity_file
> +             Selects the file from which the identity (private key) for DSA
> +             authentication is read.  Default is $HOME/.ssh/id_dsa in the
> +             user's home directory.  Identity files may also be specified on a
> +             per-host basis in the configuration file.  It is possible to have
> +             multiple -I options (and multiple identities specified in config-
>               uration files).
>  
> diff -U2 openssh-2.2.0p1/ssh.1 openssh-2.2.0p1.nigelw/ssh.1
> --- openssh-2.2.0p1/ssh.1	Tue Aug 29 11:33:51 2000
> +++ openssh-2.2.0p1.nigelw/ssh.1	Thu Dec 21 10:56:23 2000
> @@ -28,5 +28,6 @@
>  .Op Fl c Ar cipher_spec
>  .Op Fl e Ar escape_char
> -.Op Fl i Ar identity_file
> +.Op Fl i Ar rsa_identity_file
> +.Op Fl I Ar dsa_identity_file
>  .Op Fl l Ar login_name
>  .Op Fl o Ar option
> @@ -381,9 +382,21 @@
>  .It Fl g
>  Allows remote hosts to connect to local forwarded ports.
> -.It Fl i Ar identity_file
> +.It Fl i Ar rsa_identity_file
>  Selects the file from which the identity (private key) for
>  RSA authentication is read.
>  Default is
>  .Pa $HOME/.ssh/identity
> +in the user's home directory.
> +Identity files may also be specified on
> +a per-host basis in the configuration file.
> +It is possible to have multiple
> +.Fl i
> +options (and multiple identities specified in
> +configuration files).
> +.It Fl I Ar dsa_identity_file
> +Selects the file from which the identity (private key) for
> +DSA authentication is read.
> +Default is
> +.Pa $HOME/.ssh/id_dsa
>  in the user's home directory.
>  Identity files may also be specified on
> diff -U2 openssh-2.2.0p1/ssh.c openssh-2.2.0p1.nigelw/ssh.c
> --- openssh-2.2.0p1/ssh.c	Tue Aug 29 11:33:51 2000
> +++ openssh-2.2.0p1.nigelw/ssh.c	Thu Dec 21 11:01:39 2000
> @@ -125,4 +125,5 @@
>  	fprintf(stderr, "  -x          Disable X11 connection forwarding.\n");
>  	fprintf(stderr, "  -i file     Identity for RSA authentication (default: ~/.ssh/identity).\n");
> +	fprintf(stderr, "  -I file     Identity for DSA authentication (default: ~/.ssh/id_dsa).\n");
>  	fprintf(stderr, "  -t          Tty; allocate a tty even if command is given.\n");
>  	fprintf(stderr, "  -T          Do not allocate a tty.\n");
> @@ -275,5 +276,5 @@
>  		if (!opt)
>  			usage();
> -		if (strchr("eilcpLRo", opt)) {	/* options with arguments */
> +		if (strchr("eiIlcpLRo", opt)) {	/* options with arguments */
>  			optarg = av[optind] + 2;
>  			if (strcmp(optarg, "") == 0) {
> @@ -330,12 +331,24 @@
>  		case 'i':
>  			if (stat(optarg, &st) < 0) {
> -				fprintf(stderr, "Warning: Identity file %s does not exist.\n",
> +				fprintf(stderr, "Warning: RSA identity file %s does not exist.\n",
>  					optarg);
>  				break;
>  			}
>  			if (options.num_identity_files >= SSH_MAX_IDENTITY_FILES)
> -				fatal("Too many identity files specified (max %d)",
> +				fatal("Too many RSA identity files specified (max %d)",
>  				      SSH_MAX_IDENTITY_FILES);
>  			options.identity_files[options.num_identity_files++] =
> +				xstrdup(optarg);
> +			break;
> +		case 'I':
> +			if (stat(optarg, &st) < 0) {
> +				fprintf(stderr, "Warning: DSA identity file %s does not exist.\n",
> +					optarg);
> +				break;
> +			}
> +			if (options.num_identity_files2 >= SSH_MAX_IDENTITY_FILES)
> +				fatal("Too many DSA identity files specified (max %d)",
> +				      SSH_MAX_IDENTITY_FILES);
> +			options.identity_files2[options.num_identity_files2++] =
>  				xstrdup(optarg);
>  			break;
> ------------------------------------------------------------------------
> 
> Nigel
> -- 
> Heavily armed, easily bored, and off my medication.
> 





More information about the openssh-unix-dev mailing list