2001-06-15 19:31:10 +00:00
|
|
|
|
\versionid $Id: pubkey.but,v 1.3 2001/06/15 19:31:10 simon Exp $
|
2001-02-06 09:34:42 +00:00
|
|
|
|
|
|
|
|
|
\# FIXME: passphrases, examples (e.g what does a key for pasting into
|
|
|
|
|
\# authorized_keys look like?), index entries, links.
|
|
|
|
|
|
2001-01-17 10:11:16 +00:00
|
|
|
|
\C{pubkey} Using public keys for SSH authentication
|
|
|
|
|
|
2001-02-06 09:34:42 +00:00
|
|
|
|
\H{pubkey-intro} Public key authentication - an introduction
|
|
|
|
|
|
2001-06-15 19:31:10 +00:00
|
|
|
|
Public key authentication is an alternative means of identifying
|
|
|
|
|
yourself to a login server, instead of typing a password. It is more
|
|
|
|
|
secure and more flexible, but more difficult to set up.
|
|
|
|
|
|
|
|
|
|
In conventional password authentication, you prove you are who you
|
|
|
|
|
claim to be by proving that you know the correct password. The only
|
|
|
|
|
way to prove you know the password is to tell the server what you
|
|
|
|
|
think the password is. This means that if the server has been
|
|
|
|
|
hacked, or \e{spoofed} (see \k{gs-hostkey}), an attacker can learn
|
|
|
|
|
your password.
|
|
|
|
|
|
|
|
|
|
Public key authentication solves this problem. You generate a \e{key
|
|
|
|
|
pair}, consisting of a public key (which everybody is allowed to
|
|
|
|
|
know) and a private key (which you keep secret and do not give to
|
|
|
|
|
anybody). The private key is able to generate \e{signatures}.
|
|
|
|
|
A<EFBFBD>signature created using your private key cannot be forged by
|
|
|
|
|
anybody who does not have that key; but anybody who has your public
|
|
|
|
|
key can verify that a particular signature is genuine.
|
|
|
|
|
|
|
|
|
|
So you generate a key pair on your own computer, and you copy the
|
|
|
|
|
public key to the server. Then, when the server asks you to prove
|
|
|
|
|
who you are, PuTTY<54>can generate a signature using your private key.
|
|
|
|
|
The server can verify that signature (since it has your public key)
|
|
|
|
|
and allow you to log in. Now if the server is hacked or spoofed, the
|
|
|
|
|
attacker does not gain your private key or password; they only gain
|
|
|
|
|
one signature. And signatures cannot be re-used, so they have gained
|
|
|
|
|
nothing.
|
|
|
|
|
|
|
|
|
|
There is a problem with this: if your private key is stored
|
|
|
|
|
unprotected on your own computer, then anybody who gains access to
|
|
|
|
|
\e{that} will be able to generate signatures as if they were you. So
|
|
|
|
|
they will be able to log in to your server under your account. For
|
|
|
|
|
this reason, your private key is usually \e{encrypted} when it is
|
|
|
|
|
stored on your local machine, using a passphrase of your choice. In
|
|
|
|
|
order to generate a signature, PuTTY must decrypt the key, so you
|
|
|
|
|
have to type your passphrase.
|
|
|
|
|
|
|
|
|
|
This can make public-key authentication less convenient than
|
|
|
|
|
password authentication: every time you log in to the server,
|
|
|
|
|
instead of typing a short password, you have to type a longer
|
|
|
|
|
passphrase. One solution to this is to use an \e{authentication
|
|
|
|
|
agent}, a separate program which holds decrypted private keys and
|
|
|
|
|
generates signatures on request. PuTTY's authentication agent is
|
|
|
|
|
called Pageant. When you begin a Windows session, you start Pageant
|
|
|
|
|
and load your public key into it (typing your passphrase once). For
|
|
|
|
|
the rest of your session, you can start PuTTY<54>any number of times
|
|
|
|
|
and Pageant will automatically generate signatures without you
|
|
|
|
|
having to do anything. When you close your Windows session, Pageant
|
|
|
|
|
shuts down, without ever having stored your decrypted private key on
|
|
|
|
|
disk. Many people feel this is a good compromise between security
|
|
|
|
|
and convenience. See \k{pageant} for further details.
|
2001-01-17 10:11:16 +00:00
|
|
|
|
|
2001-02-06 09:34:42 +00:00
|
|
|
|
\H{pubkey-puttygen} PuTTYgen: RSA key generator for PuTTY
|
|
|
|
|
|
|
|
|
|
PuTTYgen is a key generator. It generates pairs of public and private
|
|
|
|
|
keys to be used with PuTTY, PSCP, and Plink, as well as the PuTTY
|
|
|
|
|
authentication agent, Pageant (see \k{pageant}). PuTTYgen generates
|
|
|
|
|
RSA keys.
|
|
|
|
|
|
|
|
|
|
When you run PuTTYgen you will see a window where you have two
|
|
|
|
|
choices: \e{Generate} new public/private key pair or \e{Load} an
|
|
|
|
|
existing private key.
|
|
|
|
|
|
|
|
|
|
\S{pubkey-puttygen-generate} Generate a new key
|
|
|
|
|
|
2001-06-15 19:31:10 +00:00
|
|
|
|
Before generating a new key you have to choose the strength of the
|
2001-02-06 09:34:42 +00:00
|
|
|
|
encryption. With \e{Parameters} you define the strength of the key. The
|
|
|
|
|
default of 1024 should be OK for most users.
|
|
|
|
|
|
|
|
|
|
Pressing the \e{Generate} button starts the process of generating a
|
|
|
|
|
new key pair. You then have to move the mouse over the blank area in
|
|
|
|
|
order to generate random data for the algorithm. Continue until the
|
|
|
|
|
progress bar is complete.
|
|
|
|
|
|
2001-06-15 19:31:10 +00:00
|
|
|
|
As soon as enough random data is available the key is generated. This
|
|
|
|
|
may take a little while, especially on slow machines. Once the key is
|
2001-02-06 09:34:42 +00:00
|
|
|
|
generated, its details appear in the \e{Key} part of the PuTTYgen
|
|
|
|
|
window.
|
|
|
|
|
|
|
|
|
|
Now you can change the \e{Key comment} to something more meaningful
|
|
|
|
|
than the default (which is based on the current date). e.g. add the
|
|
|
|
|
name of the host you will use it for. When using multiple keys a
|
|
|
|
|
meaningful comment may help you remember which passphrase to use! You
|
|
|
|
|
should always enter a \e{Key passphrase} and \e{Confirm passphrase} to
|
|
|
|
|
protect your keys.
|
|
|
|
|
|
2001-01-17 10:11:16 +00:00
|
|
|
|
\# Mention a good length for a passphrase. (I think Schneier
|
|
|
|
|
\# said something about this on counterpane.com once.)
|
|
|
|
|
|
|
|
|
|
\# In case people don't like the idea of exchanging a short password
|
|
|
|
|
\# typed every time for a longer passphrase typed every time, link
|
|
|
|
|
\# to the Pageant chapter.
|
2001-02-06 09:34:42 +00:00
|
|
|
|
|
|
|
|
|
Finally save the key by pressing the \e{Save} button. Do not close the
|
|
|
|
|
window but proceed with step \k{pubkey-gettingready}, otherwise you
|
|
|
|
|
will have to \e{Load} the private key again as described below.
|
|
|
|
|
|
|
|
|
|
\S{pubkey-puttygen-load} Load and modify a key
|
|
|
|
|
|
|
|
|
|
PuTTYgen does not store the public key in a file by default. If you
|
|
|
|
|
have to distribute the public key you can press the \e{Load} button,
|
|
|
|
|
select the private key file, and PuTTYgen will give you the public key
|
|
|
|
|
again. You can also change the comment and passphrase for your
|
|
|
|
|
private key this way. Just modify the values and \e{Save} the key.
|
|
|
|
|
|
|
|
|
|
\S{pubkey-gettingready} Getting ready for public key authentication
|
|
|
|
|
|
|
|
|
|
Connect to your SSH server using PuTTY with the SSH protocol. When the
|
|
|
|
|
connection succeeds you will be prompted for your user name and
|
|
|
|
|
password to login. Once logged in change into the \c{.ssh} directory
|
|
|
|
|
and open the file \c{authorized_keys} with your favorite editor (you
|
|
|
|
|
may have to create this file if this is the first key to add).
|
|
|
|
|
|
|
|
|
|
Switch to the PuTTYgen window and select all of the content below
|
|
|
|
|
\e{Public key for pasting into authorized_keys file}, copy it to the
|
|
|
|
|
clipboard (\c{Ctrl+C}). Then, switch back to the PuTTY window and
|
|
|
|
|
insert the data into the open file. Save the file.
|
|
|
|
|
|
|
|
|
|
From now on you can use the private key for authentication to this
|
|
|
|
|
host. Either select the private key in PuTTY's \e{Connection},
|
|
|
|
|
\e{SSH} panel: \e{Private key file for authentication} dialog or use
|
|
|
|
|
it with Pageant as described in \k{pageant}.
|