6.5. Authenticating by Public Key (OpenSSH Client, SSH2 Server, OpenSSH Key)

Problem

You want to authenticate between an OpenSSH client and an SSH2 server (i.e., SSH Secure Shell from SSH Communication Security) using an existing OpenSSH-format key.

Solution

  1. Export your OpenSSH key to create an SSH2-format public key. If your OpenSSH private key is ~/.ssh/id_dsa:

    $ cd ~/.ssh 
    $ ssh-keygen -e -f id_dsa > mykey-ssh2.pub
  2. Copy the public key to the SSH2 server:

    $ scp mykey-ssh2.pub remoteuser@remotehost:
  3. Log into the SSH2 server and install the public key, then log out:

    $ ssh -l remoteuser remotehost
    Password: ********
    
    remotehost$ mkdir -p ~/.ssh2                                     If it doesn't already exist
    remotehost$ chmod 700 ~/.ssh2
    remotehost$ mv mykey-ssh2.pub ~/.ssh2/
    remotehost$ cd ~/.ssh2
    remotehost$ echo "Key mykey-ssh2.pub" >> authorization     (Appending)
    remotehost$ chmod 600 mykey-ssh2.pub authorization
    remotehost$ logout
  4. Now log in via public-key authentication:

    $ ssh -l remoteuser remotehost
    Enter passphrase for key '/home/smith/.ssh/id_dsa': *******

Discussion

OpenSSH’s ssh-keygen converts OpenSSH-style keys into SSH2-style using the -e (export) option. Recall that SSH2 uses the authorization file, as explained in the sidebar, SSH-2 Key File Formats.

See Also

ssh-keygen(1).

Get Linux Security Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.