SSH Tectia  
Previous Next Up [Contents] [Index]

    About This Document >>
    Installing SSH Tectia Server for IBM z/OS >>
    Getting Started with SSH Tectia Server for IBM z/OS >>
    Configuring the Server >>
    Configuring the Client >>
    Authentication >>
        Using the z/OS System Authorization Facility
        Server Authentication with Public Keys in File >>
        Server Authentication with Certificates >>
        User Authentication with Passwords
        User Authentication with Public Keys in File >>
        User Authentication with Certificates >>
        Host-Based User Authentication >>
        User Authentication with Keyboard-Interactive >>
        Distributing Public Keys Using the Key Distribution Tool >>
            Distributing Mainframe Server Keys
            Fetching Remote Server Keys
            Distributing Mainframe User Keys
            Distributing Remote User Keys
    File Transfer Using SFTP >>
    File Transfer Using Transparent FTP Tunneling >>
    Tunneling on the Command Line >>
    Troubleshooting SSH Tectia Server for IBM z/OS >>
    Advanced Information >>
    Man Pages >>
    Log Messages >>

Distributing Mainframe User Keys

Administrators and other people can use passwords or public-key pairs with a passphrase-protected private key to access remote machines with SSH Tectia clients from a Telnet or Secure Shell session. They can also use public-key pairs with a null passphrase if they want to run the SSH Tectia client programs in JCL.

Mainframe batch users are accounts that represent applications or subsystems, not people. They are set up with public-key pairs with a null passphrase to enable non-interactive access through JCL to remote servers. One key pair is generated for each batch user. If the batch user has a shared home directory, the key is placed in the shared $HOME/.ssh2 directory, otherwise it is copied to the user's home directories on all the LPARs.

When the ssh-keygen2 utility program is run with the -P option, which requests a null passphrase, it can be run from the OMVS shell or in JCL. It must be run under the batch user's user ID in order for the file permissions to be set properly. For more information on the ssh-keygen2 options, see Appendix ssh-keygen2.

The batch user accesses the remote machine using an account created and administered on the remote machine. The remote username may either be the same as the batch user's RACF user ID, or the same but in lower case, or a different username. Several batch users may use the same remote account. One batch user may use separate accounts on one remote machine for different accesses.

Each batch user's public key must be distributed to all the remote accounts it will be accessing. The way the public key is set up differs between SSH Tectia and OpenSSH. The ssh-keydist2 script must be told which type of server the remote machine has. The server must be running when ssh-keydist2 is run.

ssh-keydist2 uses password authentication for this initial access to the remote server. The password for the remote account must be entered in a dataset or in a file. See Sections File and Dataset for instructions. The filename is entered as one of the options in the ssh-keydist2 command.

The other options needed on the ssh-keydist2 command line are the remote account username, the remote host DNS name or IP address, and the type of the remote Secure Shell server (SSH Tectia Server on Unix, SSH Tectia Server on Windows, SSH Tectia Server for IBM z/OS on mainframe, or OpenSSH on Unix).

Password from File

To set up password-from-file authentication:

  1. Create a file, for example /home/userid/passwd_file.
  2. Make sure the file is readable only by the user that created it:
    > chmod 600 /home/userid/passwd_file
    
  3. Edit the file with your favorite text editor to contain one line with your password on the remote system, for example:
    MyPasS
    

Password from Dataset

To set up password-from-dataset authentication:

  1. Allocate a dataset or a dataset member, for example:
    //'USERID.PASSWD'
    
  2. Make sure that the dataset is accessible only by the correct UserID.
  3. Edit the password dataset to contain your password on the remote system. The format of the password dataset is one line containing only the password. For example:
    MyPasS
    

Examples of Distributing User Keys

The following examples illustrate using ssh-keydist2 for distributing user keys.

Caution: When ssh-keydist2 is run with the -a option, it accepts the received host keys automatically without prompting the user. You should verify the validity of keys after receiving them or you risk being subject to a man-in-the-middle attack. To be able to verify the keys, you should use the plain host key storage format. See Section Authenticating Remote Server Hosts for more information.

Example 1: Public-Key Upload to Unix OpenSSH Server from USS Shell

This command creates a 1024-bit RSA key with an empty passphrase and uploads it to a Unix server running OpenSSH, including the necessary conversions. Public-key upload uses password-from-file for authentication. The server key is accepted automatically and the log is stored under /tmp.

> ssh-keydist2 -t rsa -b 1024 -P -u userid -p /home/userid/passwd_file \
   -a -A /tmp/my_log_file -O open_server.example.com

Example 2: Public-Key Upload to Unix OpenSSH Server Using JCL

This example KEYDIST from SAMPLIB presents a JCL script that does the same steps as the USS command in Example 1 above:

//KEYDIST EXEC PGM=IKJEFT1A,
//             REGION=0M
//SYSTSPRT DD  SYSOUT=*
//STDOUT   DD  PATH='/tmp/&SYSUID.-KEYDIST.out',
//             PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//             PATHMODE=(SIRUSR,SIWUSR)
//STDERR   DD  PATH='/tmp/&SYSUID.-KEYDIST.err',
//             PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//             PATHMODE=(SIRUSR,SIWUSR)
//STDENV   DD  DSN=&SYSUID..SSZ.SRVR551.PARMLIB(SSHENV),
//             DISP=SHR
//SYSTSIN  DD  *
  BPXBATCH SH  /usr/lpp/ssh2/bin/ssh-keydist2.sh +
               -t rsa -b 1024 -P +
               -u userid -p "//'USERID.PASSWD'" +
               -a -A /tmp/my_log_file +
               -O host1.example.com
/*
//*
//PROUT   EXEC PGM=IKJEFT1A,
//             PARM='OCOPY INDD(STDOUT) OUTDD(STDOUTPR) TEXT'
//SYSTSPRT DD  SYSOUT=*
//SYSTSIN  DD  DUMMY
//STDOUT   DD  PATH='/tmp/&SYSUID.-KEYDIST.out',
//             PATHOPTS=(ORDONLY),
//             PATHDISP=(DELETE,KEEP),
//             PATHMODE=(SIRUSR,SIWUSR)
//STDOUTPR DD  SYSOUT=*,
//             DCB=(LRECL=4000,RECFM=VB)
//*
//*
//PRERR   EXEC PGM=IKJEFT1A,
//             PARM='OCOPY INDD(STDERR) OUTDD(STDERRPR) TEXT'
//SYSTSPRT DD  SYSOUT=*
//SYSTSIN  DD  DUMMY
//STDERR   DD  PATH='/tmp/&SYSUID.-KEYDIST.err',
//             PATHOPTS=(ORDONLY),
//             PATHDISP=(DELETE,KEEP),
//             PATHMODE=(SIRUSR,SIWUSR)
//STDERRPR DD  SYSOUT=*,
//             DCB=(LRECL=4000,RECFM=VB)
//*

Example 3: Public-Key Distribution to Multiple Hosts from USS Shell

This example distributes an existing public key to several remote hosts automatically. Individual user names can be defined for each server. Server type (SSH Tectia Windows, SSH Tectia z/OS, OpenSSH) needs to be defined with the flags: -W, -Z, or -O.

In this example you can find four server "blocks":

  • -O -u userid host1 (for connecting to OpenSSH host1)
  • -O -u userid2 host2 (for connecting OpenSSH host2)
  • -W -u userid host3 (for connecting to SSH Tectia Windows host3)
  • -Z -u mf_userid host4 (for connecting to SSH Tectia z/OS host4)

Note that only one password file can be defined. This means that all remote hosts must have the same password.

The command is as follows:

> ssh-keydist2 -f /home/userid/.ssh2/id_rsa_2048_a.pub \
   -p /home/userid/passwd_file \
   -O -u userid host1 \
   -O -u userid2 host2 \
   -W -u userid host3 \
   -Z -u mf_userid host4

Previous Next Up [Contents] [Index]


[ Contact Information | Support | Feedback | SSH Home Page | SSH Products ]

Copyright © 2007 SSH Communications Security Corp.
This software is protected by international copyright laws. All rights reserved.
Copyright Notice