Consistently use a single notation to refer to SSH protocol versions, as
[u/mdw/putty] / doc / pageant.but
CommitLineData
39a938f7 1\define{versionidpageant} \versionid $Id$
8f1529bc 2
e5b0d077 3\C{pageant} Using Pageant for authentication
4
ecea795f 5\cfg{winhelp-topic}{pageant.general}
6
e5b0d077 7Pageant is an SSH authentication agent. It holds your private keys
8in memory, already decoded, so that you can use them often without
9needing to type a passphrase.
10
e5b0d077 11\H{pageant-start} Getting started with Pageant
12
8cee3b72 13Before you run Pageant, you need to have a private key in \c{*.PPK}
14format. See \k{pubkey} to find out how to generate and use one.
e5b0d077 15
16When you run Pageant, it will put an icon of a computer wearing a
ecea795f 17hat into the System tray. It will then sit and do nothing, until you
18load a private key into it.
e5b0d077 19
20If you click the Pageant icon with the right mouse button, you will
d60c975d 21see a menu. Select \q{View Keys} from this menu. The Pageant main
e5b0d077 22window will appear. (You can also bring this window up by
23double-clicking on the Pageant icon.)
24
25The Pageant window contains a list box. This shows the private keys
26Pageant is holding. When you start Pageant, it has no keys, so the
ecea795f 27list box will be empty. After you add one or more keys, they will
28show up in the list box.
e5b0d077 29
d60c975d 30To add a key to Pageant, press the \q{Add Key} button. Pageant will
e5b0d077 31bring up a file dialog, labelled \q{Select Private Key File}. Find
d60c975d 32your private key file in this dialog, and press \q{Open}.
e5b0d077 33
34Pageant will now load the private key. If the key is protected by a
35passphrase, Pageant will ask you to type the passphrase. When the
36key has been loaded, it will appear in the list in the Pageant
37window.
38
39Now start PuTTY and open an SSH session to a site that accepts your
40key. PuTTY will notice that Pageant is running, retrieve the key
41automatically from Pageant, and use it to authenticate. You can now
42open as many PuTTY sessions as you like without having to type your
43passphrase again.
44
45When you want to shut down Pageant, click the right button on the
d60c975d 46Pageant icon in the System tray, and select \q{Exit} from the menu.
e5b0d077 47Closing the Pageant main window does \e{not} shut down Pageant.
48
ecea795f 49\H{pageant-mainwin} The Pageant main window
50
51The Pageant main window appears when you left-click on the Pageant
52system tray icon, or alternatively right-click and select \q{View
53Keys} from the menu. You can use it to keep track of what keys are
54currently loaded into Pageant, and to add new ones or remove the
55existing keys.
56
57\S{pageant-mainwin-keylist} The key list box
58
59\cfg{winhelp-topic}{pageant.keylist}
60
61The large list box in the Pageant main window lists the private keys
62that are currently loaded into Pageant. The list might look
63something like this:
64
35cffede 65\c ssh1 1024 22:c3:68:3b:09:41:36:c3:39:83:91:ae:71:b2:0f:04 k1
66\c ssh-rsa 1023 74:63:08:82:95:75:e1:7c:33:31:bb:cb:00:c0:89:8b k2
ecea795f 67
68For each key, the list box will tell you:
69
70\b The type of the key. Currently, this can be \c{ssh1} (an RSA key
2e85c969 71for use with the SSH-1 protocol), \c{ssh-rsa} (an RSA key for use
72with the SSH-2 protocol), or \c{ssh-dss} (a DSA key for use with
73the SSH-2 protocol).
ecea795f 74
75\b The size (in bits) of the key.
76
77\b The fingerprint for the public key. This should be the same
78fingerprint given by PuTTYgen, and (hopefully) also the same
79fingerprint shown by remote utilities such as \c{ssh-keygen} when
80applied to your \c{authorized_keys} file.
81
82\b The comment attached to the key.
83
84\S{pageant-mainwin-addkey} The \q{Add Key} button
85
86\cfg{winhelp-topic}{pageant.addkey}
87
88To add a key to Pageant by reading it out of a local disk file,
89press the \q{Add Key} button in the Pageant main window, or
90alternatively right-click on the Pageant icon in the system tray and
91select \q{Add Key} from there.
92
93Pageant will bring up a file dialog, labelled \q{Select Private Key
94File}. Find your private key file in this dialog, and press
95\q{Open}. If you want to add more than one key at once, you can
96select multiple files using Shift-click (to select several adjacent
97files) or Ctrl-click (to select non-adjacent files).
98
99Pageant will now load the private key(s). If a key is protected by a
100passphrase, Pageant will ask you to type the passphrase.
101
102(This is not the only way to add a private key to Pageant. You can
103also add one from a remote system by using agent forwarding; see
104\k{pageant-forward} for details.)
105
106\S{pageant-mainwin-remkey} The \q{Remove Key} button
107
108\cfg{winhelp-topic}{pageant.remkey}
109
110If you need to remove a key from Pageant, select that key in the
111list box, and press the \q{Remove Key} button. Pageant will remove
112the key from its memory.
113
114You can apply this to keys you added using the \q{Add Key} button,
115or to keys you added remotely using agent forwarding (see
116\k{pageant-forward}); it makes no difference.
117
3a65c351 118\H{pageant-cmdline} The Pageant command line
119
120Pageant can be made to do things automatically when it starts up, by
121specifying instructions on its command line. If you're starting
122Pageant from the Windows GUI, you can arrange this by editing the
123properties of the Windows shortcut that it was started from.
124
125\S{pageant-cmdline-loadkey} Making Pageant automatically load keys
126on startup
127
128Pageant can automatically load one or more private keys when it
129starts up, if you provide them on the Pageant command line. Your
130command line might then look like:
131
8cee3b72 132\c C:\PuTTY\pageant.exe d:\main.ppk d:\secondary.ppk
3a65c351 133
134If the keys are stored encrypted, Pageant will request the
135passphrases on startup.
136
137\S{pageant-cmdline-command} Making Pageant run another program
138
139You can arrange for Pageant to start another program once it has
140initialised itself and loaded any keys specified on its command
141line. This program (perhaps a PuTTY, or a WinCVS making use of
142Plink, or whatever) will then be able to use the keys Pageant has
143loaded.
144
145You do this by specifying the \c{-c} option followed by the command,
146like this:
147
8cee3b72 148\c C:\PuTTY\pageant.exe d:\main.ppk -c C:\PuTTY\putty.exe
3a65c351 149
e5b0d077 150\H{pageant-forward} Using agent forwarding
151
8f1529bc 152Agent forwarding is a mechanism that allows applications on your SSH
153server machine to talk to the agent on your client machine.
154
2e85c969 155Note that at present, agent forwarding in SSH-2 is only available
8f1529bc 156when your SSH server is OpenSSH. The \cw{ssh.com} server uses a
62ea2c64 157different agent protocol, which PuTTY does not yet support.
8f1529bc 158
159To enable agent forwarding, first start Pageant. Then set up a PuTTY
160SSH session in which \q{Allow agent forwarding} is enabled (see
e2a197cf 161\k{config-ssh-agentfwd}). Open the session as normal. (Alternatively,
162you can use the \c{-A} command line option; see
163\k{using-cmdline-agent} for details.)
8f1529bc 164
165If this has worked, your applications on the server should now have
166access to a Unix domain socket which the SSH server will forward
167back to PuTTY, and PuTTY will forward on to the agent. To check that
168this has actually happened, you can try this command on Unix server
169machines:
170
171\c unixbox:~$ echo $SSH_AUTH_SOCK
172\c /tmp/ssh-XXNP18Jz/agent.28794
173\c unixbox:~$
174
175If the result line comes up blank, agent forwarding has not been
176enabled at all.
177
178Now if you run \c{ssh} on the server and use it to connect through
179to another server that accepts one of the keys in Pageant, you
180should be able to log in without a password:
181
182\c unixbox:~$ ssh -v otherunixbox
183\c [...]
184\c debug: next auth method to try is publickey
185\c debug: userauth_pubkey_agent: trying agent key my-putty-key
186\c debug: ssh-userauth2 successful: method publickey
187\c [...]
188
189If you enable agent forwarding on \e{that} SSH connection as well
190(see the manual for your server-side SSH client to find out how to
191do this), your authentication keys will still be available on the
192next machine you connect to - two SSH connections away from where
193they're actually stored.
194
195In addition, if you have a private key on one of the SSH servers,
196you can send it all the way back to Pageant using the local
197\c{ssh-add} command:
198
199\c unixbox:~$ ssh-add ~/.ssh/id_rsa
200\c Need passphrase for /home/fred/.ssh/id_rsa
201\c Enter passphrase for /home/fred/.ssh/id_rsa:
202\c Identity added: /home/fred/.ssh/id_rsa (/home/simon/.ssh/id_rsa)
203\c unixbox:~$
204
205and then it's available to every machine that has agent forwarding
206available (not just the ones downstream of the place you added it).
e5b0d077 207
208\H{pageant-security} Security considerations
209
8f1529bc 210Using Pageant for public-key authentication gives you the
211convenience of being able to open multiple SSH sessions without
212having to type a passphrase every time, but also gives you the
213security benefit of never storing a decrypted private key on disk.
214Many people feel this is a good compromise between security and
215convenience.
216
217It \e{is} a compromise, however. Holding your decrypted private keys
218in Pageant is better than storing them in easy-to-find disk files,
219but still less secure than not storing them anywhere at all. This is
220for two reasons:
221
222\b Windows unfortunately provides no way to protect pieces of memory
223from being written to the system swap file. So if Pageant is holding
224your private keys for a long period of time, it's possible that
225decrypted private key data may be written to the system swap file,
226and an attacker who gained access to your hard disk later on might
227be able to recover that data. (However, if you stored an unencrypted
228key in a disk file they would \e{certainly} be able to recover it.)
229
230\b Although, like most modern operating systems, Windows prevents
231programs from accidentally accessing one another's memory space, it
232does allow programs to access one another's memory space
233deliberately, for special purposes such as debugging. This means
234that if you allow a virus, trojan, or other malicious program on to
235your Windows system while Pageant is running, it could access the
236memory of the Pageant process, extract your decrypted authentication
237keys, and send them back to its master.
238
239Similarly, use of agent \e{forwarding} is a security improvement on
240other methods of one-touch authentication, but not perfect. Holding
241your keys in Pageant on your Windows box has a security advantage
242over holding them on the remote server machine itself (either in an
243agent or just unencrypted on disk), because if the server machine
244ever sees your unencrypted private key then the sysadmin or anyone
245who cracks the machine can steal the keys and pretend to be you for
246as long as they want.
247
248However, the sysadmin of the server machine can always pretend to be
249you \e{on that machine}. So if you forward your agent to a server
250machine, then the sysadmin of that machine can access the forwarded
251agent connection and request signatures from your public keys, and
252can therefore log in to other machines as you. They can only do this
253to a limited extent - when the agent forwarding disappears they lose
254the ability - but using Pageant doesn't actually \e{prevent} the
255sysadmin (or hackers) on the server from doing this.
256
257Therefore, if you don't trust the sysadmin of a server machine, you
258should \e{never} use agent forwarding to that machine. (Of course
259you also shouldn't store private keys on that machine, type
260passphrases into it, or log into other machines from it in any way
261at all; Pageant is hardly unique in this respect.)