PuTTY User Manual
PuTTY User Manual
=================
PuTTY is a free (MIT-licensed) Win32 Telnet and SSH client. This manual
documents PuTTY, and its companion utilities PSCP, PSFTP, Plink, Pageant
and PuTTYgen.
_Note to Unix users:_ this manual currently primarily documents the Windows
versions of the PuTTY utilities. Some options are therefore mentioned
that are absent from the Unix version; the Unix version has features not
described here; and the pterm and command-line puttygen utilities are not
described at all. The only Unix-specific documentation that currently
exists is the man pages.
This manual is copyright 2001-2015 Simon Tatham. All rights reserved. You
may distribute this documentation under the MIT licence. See appendix C for
the licence text in full.
Chapter 1: Introduction to PuTTY
-------------------------------PuTTY is a free SSH, Telnet and Rlogin client for 32-bit Windows
systems.
1.1 What are SSH, Telnet and Rlogin?
If you already know what SSH, Telnet and Rlogin are, you can safely
skip on to the next section.
SSH, Telnet and Rlogin are three ways of doing the same thing:
logging in to a multi-user computer from another computer, over a
network.
Multi-user operating systems, such as Unix and VMS, usually present
a command-line interface to the user, much like the `Command Prompt'
or `MS-DOS Prompt' in Windows. The system prints a prompt, and you
type commands which the system will obey.
Using this type of interface, there is no need for you to be sitting
at the same machine you are typing commands to. The commands,
and responses, can be sent over a network, so you can sit at one
computer and give commands to another one, or even to more than one.
SSH, Telnet and Rlogin are _network protocols_ that allow you to do
this. On the computer you sit at, you run a _client_, which makes a
network connection to the other computer (the _server_). The network
connection carries your keystrokes and commands from the client to
the server, and carries the server's responses back to you.
These protocols can also be used for other types of keyboard-based
interactive session. In particular, there are a lot of bulletin
boards, talker systems and MUDs (Multi-User Dungeons) which support
access using Telnet. There are even a few that support SSH.
You might want to use SSH, Telnet or Rlogin if:
-
you want to use a bulletin board system, talker or MUD which can
be accessed using Telnet.
you only use Windows. Windows computers have their own ways
of networking between themselves, and unless you are doing
something fairly unusual, you will not need to use any of these
remote login protocols.
SSH and Rlogin both allow you to log in to the server without
having to type a password. (Rlogin's method of doing this is
insecure, and can allow an attacker to access your account on
the server. SSH's method is much more secure, and typically
breaking the security requires the attacker to have gained
access to your actual client machine.)
When you start PuTTY, you will see a dialog box. This dialog box
allows you to control everything PuTTY can do. See chapter 4 for
details of all the things you can control.
You don't usually need to change most of the configuration options.
To start the simplest kind of session, all you need to do is to
enter a few basic parameters.
In the `Host Name' box, enter the Internet host name of the server
you want to connect to. You should have been told this by the
provider of your login account.
Now select a login protocol to use, from the `Connection type'
buttons. For a login session, you should select Telnet, Rlogin or
SSH. See section 1.2 for a description of the differences between
the three protocols, and advice on which one to use. The fourth
protocol, _Raw_, is not used for interactive login sessions; you
would usually use this for debugging other Internet services (see
section 3.6). The fifth option, _Serial_, is used for connecting to
a local serial line, and works somewhat differently: see section 3.7
for more information on this.
When you change the selected protocol, the number in the `Port'
box will change. This is normal: it happens because the various
login services are usually provided on different network ports
by the server machine. Most servers will use the standard port
numbers, so you will not need to change the port setting. If your
server provides login services on a non-standard port, your system
administrator should have told you which one. (For example, many
MUDs run Telnet service on a port other than 23.)
Once you have filled in the `Host Name', `Protocol', and possibly
`Port' settings, you are ready to connect. Press the `Open' button
at the bottom of the dialog box, and PuTTY will begin trying to
connect you to the server.
2.2 Verifying the host key (SSH only)
If you are not using the SSH protocol, you can skip this section.
If you are using SSH to connect to a server for the first time, you
will probably see a message looking something like this:
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 1024 7b:e5:6f:a7:f4:f9:81:62:5c:e3:1f:bf:8b:57:6c:5a
If you trust this host, hit Yes to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, hit No.
If you do not trust this host, hit Cancel to abandon the
connection.
This is a feature of the SSH protocol. It is designed to protect you
against a network attack known as _spoofing_: secretly redirecting
Break
Synch
Erase Character
PuTTY can also be configured to send this when the Backspace key
is pressed; see section 4.16.3.
Erase Line
Go Ahead
No Operation
Should have no effect.
Abort Process
Abort Output
Interrupt Process
PuTTY can also be configured to send this when Ctrl-C is typed;
see section 4.16.3.
Suspend Process
PuTTY can also be configured to send this when Ctrl-Z is typed;
see section 4.16.3.
End Of Record
End Of File
IGNORE message
Should have no effect.
Break
Only available in SSH-2, and only during a session. Optional
extension; may not be supported by server. PuTTY requests the
server's default break length.
window with precisely the same options as your current one connecting to the same host using the same protocol, with all
the same terminal settings and everything.
-
The `Saved Sessions' submenu gives you quick access to any sets
of stored session details you have previously saved. See section
4.1.2 for details of how to create saved sessions.
Now click the `Add' button. The details of your port forwarding
should appear in the list box.
Now start your session and log in. (Port forwarding will not be
enabled until after you have logged in; otherwise it would be easy
to perform completely anonymous network attacks, and gain access to
anyone's virtual private network.) To check that PuTTY has set up
the port forwarding correctly, you can look at the PuTTY Event Log
(see section 3.1.3.1). It should say something like this:
2001-12-05 17:22:10 Local port 3110 forwarding to
popserver.example.com:110
Now if you connect to the source port number on your local PC, you
should find that it answers you exactly as if it were the service
running on the destination machine. So in this example, you could
then configure an e-mail client to use `localhost:3110' as a POP3 server instead of `popserver.example.com:110'. (Of course, the
forwarding will stop happening when your PuTTY session closes down.)
You can also forward ports in the other direction: arrange for a
particular port number on the _server_ machine to be forwarded back
to your PC as a connection to a service on your PC or near it. To do
this, just select the `Remote' radio button instead of the `Local'
one. The `Source port' box will now specify a port number on the
_server_ (note that most servers will not allow you to use port
numbers under 1024 for this purpose).
An alternative way to forward local connections to remote hosts
is to use dynamic SOCKS proxying. In this mode, PuTTY acts as a
SOCKS server, which SOCKS-aware programs can connect to and open
forwarded connections to the destination of their choice, so this
can be an alternative to long lists of static forwardings. To use
this mode, you will need to select the `Dynamic' radio button
instead of `Local', and then you should not enter anything into the
`Destination' box (it will be ignored). PuTTY will then listen for
SOCKS connections on the port you have specified. Most web browsers
can be configured to connect to this SOCKS proxy service; also, you
can forward other PuTTY connections through it by setting up the
Proxy control panel (see section 4.15 for details).
The source port for a forwarded connection usually does not accept
connections from any machine except the SSH client or server machine
itself (for local and remote forwardings respectively). There are
controls in the Tunnels panel to change this:
-
The `Remote ports do the same' option does the same thing for
remote-to-local port forwardings (so that machines other than
the SSH server machine can connect to the forwarded port.) Note
that this feature is only available in the SSH-2 protocol, and
not all SSH-2 servers honour it (in OpenSSH, for example, it's
usually disabled by default).
line to use (if your computer has more than one) and what speed
(baud rate) to use when transferring data. For further configuration
options (data bits, stop bits, parity, flow control), you can use
the `Serial' configuration panel (see section 4.27).
After you start up PuTTY in serial mode, you might find that you
have to make the first move, by sending some data out of the serial
line in order to notify the device at the other end that someone is
there for it to talk to. This probably depends on the device. If you
start up a PuTTY serial session and nothing appears in the window,
try pressing Return a few times and see if that helps.
A serial line provides no well defined means for one end of the
connection to notify the other that the connection is finished.
Therefore, PuTTY in serial mode will remain connected until you
close the window using the close button.
3.8 The PuTTY command line
PuTTY can be made to do various things without user intervention
by supplying command-line arguments (e.g., from a command prompt
window, or a Windows shortcut).
3.8.1 Starting a session from the command line
These options allow you to bypass the configuration window and
launch straight into a session.
To start a connection to a server called `host':
putty.exe [-ssh | -telnet | -rlogin | -raw] [user@]host
If this syntax is used, settings are taken from the Default Settings
(see section 4.1.2); `user' overrides these settings if supplied.
Also, you can specify a protocol, which will override the default
protocol (see section 3.8.3.2).
For telnet sessions, the following alternative syntax is supported
(this makes PuTTY suitable for use as a URL handler for telnet URLs
in web browsers):
putty.exe telnet://host[:port]/
To start a connection to a serial port, e.g. COM1:
putty.exe -serial com1
In order to start an existing saved session called `sessionname',
use the `-load' option (described in section 3.8.3.1).
putty.exe -load "session name"
3.8.2 `-cleanup'
If invoked with the `-cleanup' option, rather than running as
normal, PuTTY will remove its registry entries and random seed file
from the local machine (after confirming with the user).
These options are not available in the file transfer tools PSCP and
PSFTP (which only work with the SSH protocol).
These options are equivalent to the protocol selection buttons
in the Session panel of the PuTTY configuration box (see section
4.1.1).
risk involved with enabling this option; see section 9.5 for
details.
These options are equivalent to the agent forwarding checkbox in the
Auth panel of the PuTTY configuration box (see section 4.21.6).
These options are not available in the file transfer tools PSCP and
PSFTP.
3.8.3.11 `-X' and `-x': control X11 forwarding
The `-X' option turns on X11 forwarding in SSH, and `-x' turns it
off. These options are only meaningful if you are using SSH.
For information on X11 forwarding, see section 3.4.
These options are equivalent to the X11 forwarding checkbox in the
X11 panel of the PuTTY configuration box (see section 4.24).
These options are not available in the file transfer tools PSCP and
PSFTP.
3.8.3.12 `-t' and `-T': control pseudo-terminal allocation
The `-t' option ensures PuTTY attempts to allocate a pseudo-terminal
at the server, and `-T' stops it from allocating one. These options
are only meaningful if you are using SSH.
These options are equivalent to the `Don't allocate a pseudoterminal' checkbox in the SSH panel of the PuTTY configuration box
(see section 4.23.1).
These options are not available in the file transfer tools PSCP and
PSFTP.
3.8.3.13 `-N': suppress starting a shell or command
The `-N' option prevents PuTTY from attempting to start a shell or
command on the remote server. You might want to use this option if
you are only using the SSH connection for port forwarding, and your
user account on the server does not have the ability to run a shell.
This feature is only available in SSH protocol version 2 (since the
version 1 protocol assumes you will always want to run a shell).
This option is equivalent to the `Don't start a shell or command at
all' checkbox in the SSH panel of the PuTTY configuration box (see
section 4.18.2).
This option is not available in the file transfer tools PSCP and
PSFTP.
3.8.3.14 `-nc': make a remote network connection in place of a remote shell
or command
The `-nc' option prevents Plink (or PuTTY) from attempting to start
a shell or command on the remote server. Instead, it will instruct
`o' for odd, `e' for even, `m' for mark and `s' for space.
-
The `Host Name' box is where you type the name, or the IP
address, of the server you want to connect to.
The `Connection type' radio buttons let you choose what type
of connection you want to make: a raw connection, a Telnet
connection, an Rlogin connection, an SSH connection, or a
connection to a local serial line. (See section 1.2 for a
summary of the differences between SSH, Telnet and rlogin; see
section 3.6 for an explanation of `raw' connections; see section
3.7 for information about using a serial line.)
The `Port' box lets you specify which port number on the server
to connect to. If you select Telnet, Rlogin, or SSH, this box
will be filled in automatically to the usual value, and you will
only need to change it if you have an unusual server. If you
select Raw mode, you will almost certainly need to fill in the
`Port' box yourself.
host name and protocol. A saved session contains all the information
PuTTY needs to start exactly the session you want.
-
To save your default settings: first set up the settings the way
you want them saved. Then come back to the Session panel. Select
the `Default Settings' entry in the saved sessions list, with a
single click. Then press the `Save' button.
`None'. This is the default option; in this mode PuTTY will not
create a log file at all.
`&H' will be replaced by the host name you are connecting to.
For example, if you enter the host name `c:\puttylogs\log-&h-&y&m&d&t.dat', you will end up with files looking like
log-server1.example.com-20010528-110859.dat
log-unixbox.somewhere.org-20010611-221001.dat
4.2.2 `What to do if the log file already exists'
This control allows you to specify what PuTTY should do if it tries
to start writing to a log file and it finds the file already exists.
You might want to automatically destroy the existing log file and
start a new one with the same name. Alternatively, you might want to
open the existing log file and add data to the _end_ of it. Finally
(the default option), you might not want to have any automatic
behaviour, but to ask the user every time the problem comes up.
4.2.3 `Flush log file frequently'
This option allows you to control how frequently logged data is
flushed to disc. By default, PuTTY will flush data as soon as it
is displayed, so that if you view the log file while a session is
still open, it will be up to date; and if the client system crashes,
there's a greater chance that the data will be preserved.
Second line
Third line
4.3.4 `Implicit LF in every CR'
Most servers send two control characters, CR and LF, to start a new
line of the screen. The CR character makes the cursor return to the
left-hand side of the screen. The LF character makes the cursor move
one line down (and might make the screen scroll).
Some servers only send CR, and so the newly written line is
overwritten by the following line. This option causes a line feed so
that all lines are displayed.
4.3.5 `Use background colour to erase screen'
Not all terminals agree on what colour to turn the screen when the
server sends a `clear screen' sequence. Some terminals believe the
screen should always be cleared to the _default_ background colour.
Others believe the screen should be cleared to whatever the server
has selected as a background colour.
There exist applications that expect both kinds of behaviour.
Therefore, PuTTY can be configured to do either.
With this option disabled, screen clearing is always done in the
default background colour. With this option enabled, it is done in
the _current_ background colour.
Background-colour erase can be turned on and off by control
sequences sent by the server. This configuration option controls the
_default_ state, which will be restored when you reset the terminal
(see section 3.1.3.6). However, if you modify this option in midsession using `Change Settings', it will take effect immediately.
4.3.6 `Enable blinking text'
The server can ask PuTTY to display text that blinks on and off.
This is very distracting, so PuTTY allows you to turn blinking text
off completely.
When blinking text is disabled and the server attempts to make
some text blink, PuTTY will instead display the text with a bolded
background colour.
Blinking text can be turned on and off by control sequences sent by
the server. This configuration option controls the _default_ state,
which will be restored when you reset the terminal (see section
3.1.3.6). However, if you modify this option in mid-session using
`Change Settings', it will take effect immediately.
4.3.7 `Answerback to ^E'
This option controls what PuTTY will send back to the server if the
server sends it the ^E enquiry character. Normally it just sends the
string `PuTTY'.
In Linux mode, F6 to F12 behave just like the default mode, but
F1 to F5 generate `ESC [[A' through to `ESC [[E'. This mimics
the Linux virtual console.
In VT400 mode, all the function keys behave like the default
mode, but the actual top row of the numeric keypad generates
`ESC OP' through to `ESC OS'.
If you don't know what any of this means, you probably don't need to
fiddle with it.
4.4.4 Controlling Application Cursor Keys mode
Application Cursor Keys mode is a way for the server to change the
control sequences sent by the arrow keys. In normal mode, the arrow
keys send `ESC [A' through to `ESC [D'. In application mode, they
send `ESC OA' through to `ESC OD'.
Application Cursor Keys mode can be turned on and off by the server,
depending on the application. PuTTY allows you to configure the
initial state.
You can also disable application cursor keys mode completely, using
the `Features' configuration panel; see section 4.6.1.
4.4.5 Controlling Application Keypad mode
Application Keypad mode is a way for the server to change the
behaviour of the numeric keypad.
In normal mode, the keypad behaves like a normal Windows keypad:
with NumLock on, the number keys generate numbers, and with NumLock
off they act like the arrow keys and Home, End etc.
In application mode, all the keypad keys send special control
sequences, _including_ Num Lock. Num Lock stops behaving like Num
Lock and becomes another function key.
Depending on which version of Windows you run, you may find the Num
Lock light still flashes on and off every time you press Num Lock,
even when application mode is active and Num Lock is acting like a
function key. This is unavoidable.
Application keypad mode can be turned on and off by the server,
depending on the application. PuTTY allows you to configure the
initial state.
You can also disable application keypad mode completely, using the
`Features' configuration panel; see section 4.6.1.
4.4.6 Using NetHack keypad mode
PuTTY has a special mode for playing NetHack. You can enable it
by selecting `NetHack' in the `Initial state of numeric keypad'
control.
In this mode, the numeric keypad keys 1-9 generate the NetHack
movement commands (hjklyubn). The 5 key generates the `.' command
(do nothing).
In addition, pressing Shift or Ctrl with the keypad keys generate
the Shift- or Ctrl-keys you would expect (e.g. keypad-7 generates
`y', so Shift-keypad-7 generates `Y' and Ctrl-keypad-7 generates
Ctrl-Y); these commands tell NetHack to keep moving you in the same
direction until you encounter something interesting.
For some reason, this feature only works properly when Num Lock is
on. We don't know why.
4.4.7 Enabling a DEC-like Compose key
Panel.
-
`Change the number of rows and columns': the font size will not
change. (This is the default.)
`Change the size of the font': the number of rows and columns in
the terminal will stay the same, and the font size will change.
window is resized,
_except_ when the
font size will
key while resizing
the window and the border, using the `Gap between text and window
edge' control. By default this is set at one pixel. You can reduce
it to zero, or increase it further.
4.9 The Behaviour panel
The Behaviour configuration panel allows you to control aspects of
the behaviour of PuTTY's window.
4.9.1 Controlling the window title
The `Window title' edit box allows you to set the title of the PuTTY
window. By default the window title will contain the host name
followed by `PuTTY', for example `server1.example.com - PuTTY'. If
you want a different window title, this is where to set it.
PuTTY allows the server to send `xterm' control sequences which
modify the title of the window in mid-session (unless this is
disabled - see section 4.6.5); the title string set here is
therefore only the _initial_ window title.
As well as the _window_ title, there is also an `xterm' sequence
to modify the title of the window's _icon_. This makes sense in a
windowing system where the window becomes an icon when minimised,
such as Windows 3.1 or most X Window System setups; but in the
Windows 95-like user interface it isn't as applicable.
By default, PuTTY only uses the server-supplied _window_ title,
and ignores the icon title entirely. If for some reason you want
to see both titles, check the box marked `Separate window and icon
titles'. If you do this, PuTTY's window title and Taskbar caption
will change into the server-supplied icon title if you minimise the
PuTTY window, and change back to the server-supplied window title if
you restore it. (If the server has not bothered to supply a window
or icon title, none of this will happen.)
4.9.2 `Warn before closing window'
If you press the Close button in a PuTTY window that contains a
running session, PuTTY will put up a warning window asking if you
really meant to close the window. A window whose session has already
terminated can always be closed without a warning.
If you want to be able to close a window quickly, you can disable
the `Warn before closing window' option.
4.9.3 `Window closes on ALT-F4'
By default, pressing ALT-F4 causes the window to close (or a warning
box to appear; see section 4.9.2). If you disable the `Window closes
on ALT-F4' option, then pressing ALT-F4 will simply send a key
sequence to the server.
4.9.4 `System menu appears on ALT-Space'
If this option is enabled, then pressing ALT-Space will bring up the
PuTTY window's menu, like clicking on the top left corner. If it is
disabled, then pressing ALT-Space will just send `ESC SPACE' to the
server.
Some accessibility programs for Windows may need this option
enabling to be able to control PuTTY's window successfully. For
instance, Dragon NaturallySpeaking requires it both to open the
system menu via voice, and to close, minimise, maximise and restore
the window.
4.9.5 `System menu appears on Alt alone'
If this option is enabled, then pressing and releasing ALT will
bring up the PuTTY window's menu, like clicking on the top left
corner. If it is disabled, then pressing and releasing ALT will have
no effect.
4.9.6 `Ensure window is always on top'
If this option is enabled, the PuTTY window will stay on top of all
other windows.
4.9.7 `Full screen on Alt-Enter'
If this option is enabled, then pressing Alt-Enter will cause the
PuTTY window to become full-screen. Pressing Alt-Enter again will
restore the previous window size.
The full-screen feature is also available from the System menu, even
when it is configured not to be available on the Alt-Enter key. See
section 3.1.3.7.
4.10 The Translation panel
The Translation configuration panel allows you to control the
translation between the character set understood by the server and
the character set understood by PuTTY.
4.10.1 Controlling character set translation
During an interactive session, PuTTY receives a stream of 8-bit
bytes from the server, and in order to display them on the screen it
needs to know what character set to interpret them in. Similarly,
PuTTY needs to know how to translate your keystrokes into the
encoding the server expects. Unfortunately, there is no satisfactory
mechanism for PuTTY and the server to communicate this information,
so it must usually be manually configured.
There are a lot of character sets to choose from. The `Remote
character set' option lets you select one.
By default PuTTY will use the UTF-8 encoding of Unicode, which can
represent pretty much any character; data coming from the server
is interpreted as UTF-8, and keystrokes are sent UTF-8 encoded.
This is what most modern distributions of Linux will expect by
default. However, if this is wrong for your server, you can select a
different character set using this control.
The ISO-8859 series are all standard character sets that include
various accented characters appropriate for different sets of
languages.
If you want the old IBM PC character set with block graphics and
line-drawing characters, you can select `CP437'.
If you need support for a numeric code page which is not listed in
the drop-down list, such as code page 866, then you can try entering
its name manually (`CP866' for example) in the list box. If the
underlying version of Windows has the appropriate translation table
installed, PuTTY will use it.
4.10.2 `Treat CJK ambiguous characters as wide'
There are some Unicode characters whose width is not well-defined.
In most contexts, such characters should be treated as singlewidth for the purposes of wrapping and so on; however, in some CJK
contexts, they are better treated as double-width for historical
reasons, and some server-side applications may expect them to be
displayed as such. Setting this option will cause PuTTY to take the
double-width interpretation.
If you use legacy CJK applications, and you find your lines are
wrapping in the wrong places, or you are having other display
problems, you might want to play with this setting.
This option only has any effect in UTF-8 mode (see section 4.10.1).
4.10.3 `Caps Lock acts as Cyrillic switch'
This feature allows you to switch between a US/UK keyboard layout
and a Cyrillic keyboard layout by using the Caps Lock key, if you
need to type (for example) Russian and English side by side in the
same document.
Currently this feature is not expected to work properly if your
native keyboard layout is not US or UK.
4.10.4 Controlling display of line-drawing characters
VT100-series terminals allow the server to send control sequences
that shift temporarily into a separate character set for drawing
simple lines and boxes. However, there are a variety of ways in
which PuTTY can attempt to find appropriate characters, and the
right one to use depends on the locally configured font. In general
you should probably try lots of options until you find one that your
particular font supports.
-
`Use Unicode line drawing code points' tries to use the box
characters that are present in Unicode. For good Unicodesupporting fonts this is probably the most reliable and
functional option.
-
`Font has XWindows encoding' is for use with fonts that have a
special encoding, where the lowest 32 character positions (below
the ASCII printable range) contain the line-drawing characters.
This is unlikely to be the case with any standard Windows font;
it will probably only apply to custom-built fonts or fonts that
have been automatically converted from the X Window System.
`Use font in both ANSI and OEM modes' tries to use the same font
in two different character sets, to obtain a wider range of
characters. This doesn't always work; some fonts claim to be a
different size depending on which character set you try to use.
`Use font in OEM mode only' is more reliable than that, but can
miss out other characters from the main character set.
Normally, you have to hold down Alt while dragging the mouse to
select a rectangular block. Using the `Default selection mode'
control, you can set rectangular selection as the default, and then
you have to hold down Alt to get the _normal_ behaviour.
4.11.5 Configuring word-by-word selection
PuTTY will select a word at a time in the terminal window if you
double-click to begin the drag. This panel allows you to control
precisely what is considered to be a word.
Each character is given a _class_, which is a small number
(typically 0, 1 or 2). PuTTY considers a single word to be any
number of adjacent characters in the same class. So by modifying the
assignment of characters to classes, you can modify the word-by-word
selection behaviour.
In the default configuration, the character classes are:
-
So, for example, if you assign the `@' symbol into character class
2, you will be able to select an e-mail address with just a double
click.
In order to adjust these assignments, you start by selecting a group
of characters in the list box. Then enter a class number in the edit
box below, and press the `Set' button.
This mechanism currently only covers ASCII characters, because it
isn't feasible to expand the list to cover the whole of Unicode.
Character class definitions can be modified by control sequences
sent by the server. This configuration option controls the _default_
state, which will be restored when you reset the terminal (see
section 3.1.3.6). However, if you modify this option in mid-session
using `Change Settings', it will take effect immediately.
4.12 The Colours panel
The Colours panel allows you to control PuTTY's use of colour.
4.12.1 `Allow terminal to specify ANSI colours'
This option is enabled by default. If it is disabled, PuTTY will
ignore any control sequences sent by the server to request coloured
text.
If you have a particularly garish application, you might want to
turn this option off and make PuTTY only use the default foreground
The `Exclude Hosts/IPs' box may contain more than one exclusion
range, separated by commas. Each range can be an IP address or a DNS
name, with a `*' character allowing wildcards. For example:
*.example.com
This excludes any host with a name ending in `.example.com' from
proxying.
192.168.88.*
This excludes any host with an IP address starting with 192.168.88
from proxying.
192.168.88.*,*.example.com
This excludes both of the above ranges at once.
Connections to the local host (the host name `localhost', and any
loopback IP address) are never proxied, even if the proxy exclude
list does not explicitly contain them. It is very unlikely that this
behaviour would ever cause problems, but if it does you can change
it by enabling `Consider proxying local host connections'.
Note that if you are doing DNS at the proxy (see section 4.15.3),
you should make sure that your proxy exclusion settings do not
depend on knowing the IP address of a host. If the name is passed on
to the proxy without PuTTY looking it up, it will never know the IP
address and cannot check it against your list.
4.15.3 Name resolution when using a proxy
If you are using a proxy to access a private network, it can make a
difference whether DNS name resolution is performed by PuTTY itself
(on the client machine) or performed by the proxy.
The `Do DNS name lookup at proxy end' configuration option allows
you to control this. If you set it to `No', PuTTY will always do its
own DNS, and will always pass an IP address to the proxy. If you set
it to `Yes', PuTTY will always pass host names straight to the proxy
without trying to look them up first.
If you set this option to `Auto' (the default), PuTTY will do
something it considers appropriate for each type of proxy. Telnet,
HTTP, and SOCKS5 proxies will have host names passed straight to
them; SOCKS4 proxies will not.
Note that if you are doing DNS at the proxy, you should
that your proxy exclusion settings (see section 4.15.2)
depend on knowing the IP address of a host. If the name
to the proxy without PuTTY looking it up, it will never
address and cannot check it against your list.
make sure
do not
is passed on
know the IP
The original SOCKS 4 protocol does not support proxy-side DNS. There
is a protocol extension (SOCKS 4A) which does support it, but not
all SOCKS 4 servers provide this extension. If you enable proxy DNS
and your SOCKS 4 server cannot deal with it, this might be why.
SOCKS 4 can use the `Username' field, but does not support
passwords.
This will send your username and password as the first two lines
to the proxy, followed by a command to connect to the desired host
and port. Note that if you do not include the `%user' or `%pass'
tokens in the Telnet command, then the `Username' and `Password'
configuration fields will be ignored.
4.16 The Telnet panel
The Telnet panel allows you to configure options that only apply to
Telnet sessions.
4.16.1 `Handling of OLD_ENVIRON ambiguity'
The original Telnet mechanism for passing environment variables was
badly specified. At the time the standard (RFC 1408) was written,
BSD telnet implementations were already supporting the feature, and
the intention of the standard was to describe the behaviour the BSD
implementations were already using.
Sadly there was a typing error in the standard when it was issued,
and two vital function codes were specified the wrong way round. BSD
implementations did not change, and the standard was not corrected.
Therefore, it's possible you might find either BSD or RFC-compliant
implementations out there. This switch allows you to choose which
one PuTTY claims to be.
The problem was solved by issuing a second standard, defining a
new Telnet mechanism called NEW_ENVIRON, which behaved exactly
like the original OLD_ENVIRON but was not encumbered by existing
implementations. Most Telnet servers now support this, and it's
unambiguous. This feature should only be needed if you have trouble
passing environment variables to quite an old server.
4.16.2 Passive and active Telnet negotiation modes
In a Telnet connection, there are two types of data passed between
the client and the server: actual text, and _negotiations_ about
which Telnet extra features to use.
PuTTY can use two different strategies for negotiation:
-
If this box is checked, several key sequences will have their normal
actions modified:
-
the Backspace key on the keyboard will send the Telnet special
backspace code;
You probably shouldn't enable this unless you know what you're
doing.
4.16.4 `Return key sends Telnet New Line instead of ^M'
Unlike most other remote login protocols, the Telnet protocol has
a special `new line' code that is not the same as the usual line
endings of Control-M or Control-J. By default, PuTTY sends the
Telnet New Line code when you press Return, instead of sending
Control-M as it does in most other protocols.
Most Unix-style Telnet servers don't mind whether they receive
Telnet New Line or Control-M; some servers do expect New Line,
and some servers prefer to see ^M. If you are seeing surprising
behaviour when you press Return in a Telnet session, you might try
turning this option off to see if it helps.
4.17 The Rlogin panel
The Rlogin panel allows you to configure options that only apply to
Rlogin sessions.
4.17.1 `Local username'
Rlogin allows an automated (password-free) form of login by means
of a file called `.rhosts' on the server. You put a line in your
`.rhosts' file saying something like `[email protected]', and
then when you make an Rlogin connection the client transmits the
username of the user running the Rlogin client. The server checks
the username and hostname against `.rhosts', and if they match it
does not ask for a password.
This only works because Unix systems contain a safeguard to stop a
user from pretending to be another user in an Rlogin connection.
Rlogin connections have to come from port numbers below 1024, and
Unix systems prohibit this to unprivileged processes; so when the
server sees a connection from a low-numbered port, it assumes the
client end of the connection is held by a privileged (and therefore
trusted) process, so it believes the claim of who the user is.
Windows does not have this restriction: _any_ user can initiate
an outgoing connection from a low-numbered port. Hence, the
Rlogin `.rhosts' mechanism is completely useless for securely
distinguishing several different users on a Windows machine. If you
have a `.rhosts' entry pointing at a Windows PC, you should assume
that _anyone_ using that PC can spoof your username in an Rlogin
versa.
If you select `1 only' or `2 only' here, PuTTY will only connect if
the server you connect to offers the SSH protocol version you have
specified.
You should normally leave this at the default, `2 only'. The older
SSH-1 protocol is no longer developed, has many known cryptographic
weaknesses, and is generally not considered to be secure. If you
permit use of SSH-1 by selecting `2' instead of `2 only', an active
attacker can force downgrade to SSH-1 even if the server you're
connecting to supports SSH-2.
PuTTY's protocol 1 implementation is provided mainly for
compatibility, and is no longer being enhanced.
4.18.5 Sharing an SSH connection between PuTTY tools
The controls in this box allow you to configure PuTTY to reuse an
existing SSH connection, where possible.
The
the
the
one
Each instance of PuTTY can still run at most one terminal session,
but using the controls in this box, you can configure PuTTY to check
if another instance of itself has already connected to the target
host, and if so, share that instance's SSH connection instead of
starting a separate new one.
To enable this feature, just tick the box `Share SSH connections if
possible'. Then, whenever you start up a PuTTY session connecting to
a particular host, it will try to reuse an existing SSH connection
if one is available. For example, selecting `Duplicate Session' from
the system menu will launch another session on the same host, and if
sharing is enabled then it will reuse the existing SSH connection.
When this mode is in use, the first PuTTY that connected to a given
server becomes the `upstream', which means that it is the one
managing the real SSH connection. All subsequent PuTTYs which reuse
the connection are referred to as `downstreams': they do not connect
to the real server at all, but instead connect to the upstream PuTTY
via local inter-process communication methods.
For this system to be activated, _both_ the upstream and downstream
instances of PuTTY must have the sharing option enabled.
The upstream PuTTY can therefore not terminate until all its
downstreams have closed. This is similar to the effect you get with
port forwarding or X11 forwarding, in which a PuTTY whose terminal
session has already finished will still remain open so as to keep
serving forwarded connections.
In case you need to configure this system in more detail, there
are two additional checkboxes which allow you to specify whether a
`Max data before rekey' specifies the amount of data (in bytes)
that is permitted to flow in either direction before a rekey is
initiated. If this is set to zero, PuTTY will not rekey due to
If this box contains at least one host key or fingerprint when PuTTY
makes an SSH connection, then PuTTY's automated host key management
is completely bypassed: the connection will be permitted if and only
if the host key presented by the server is one of the keys listed
in this box, and the host key store in the Registry will be neither
read _nor written_.
If the box is empty (as it usually is), then PuTTY's automated host
key management will work as normal.
4.20 The Cipher panel
PuTTY supports a variety of different encryption algorithms, and
allows you to choose which one you prefer to use. You can do this by
dragging the algorithms up and down in the list box (or moving them
using the Up and Down buttons) to specify a preference order. When
you make an SSH connection, PuTTY will search down the list from the
top until it finds an algorithm supported by the server, and then
use that.
PuTTY currently supports the following algorithms:
-
If the algorithm PuTTY finds is below the `warn below here' line,
you will see a warning box when you make the connection:
The first cipher supported by the server
is single-DES, which is below the configured
warning threshold.
Do you want to continue with this connection?
This warns you that the first available encryption is not a very
secure one. Typically you would put the `warn below here' line
between the encryptions you consider secure and the ones you
consider substandard. By default, PuTTY supplies a preference order
intended to reflect a reasonable preference in terms of security and
speed.
In SSH-2, the encryption algorithm is negotiated independently for
each direction of the connection, although PuTTY does not support
separate configuration of the preference orders. As a result you may
get two warnings similar to the one above, possibly with different
encryptions.
Single-DES is not recommended in the SSH-2 protocol standards, but
one or two server implementations do support it. PuTTY can use
single-DES to interoperate with these servers if you enable the
`Enable legacy use of single-DES in SSH-2' option; by default this
is disabled and PuTTY will stick to recommended ciphers.
4.21 The Auth panel
The Auth panel allows you to configure authentication options for
SSH sessions.
4.21.1 `Bypass authentication entirely'
In SSH-2, it is possible to establish a connection without using
SSH's mechanisms to identify or authenticate oneself to the server.
Some servers may prefer to handle authentication in the data
channel, for instance, or may simply require no authentication
whatsoever.
By default, PuTTY assumes the server requires authentication (most
do), and thus must provide a username. If you find you are getting
unwanted username prompts, you could try checking this option.
This option only affects SSH-2 connections. SSH-1 connections always
require an authentication step.
4.21.2 `Display pre-authentication banner'
SSH-2 servers can provide a message for clients to display to the
prospective user before the user logs in; this is sometimes known
as a pre-authentication `banner'. Typically this is used to provide
information about the server and legal notices.
By default, PuTTY displays this message before prompting for a
password or similar credentials (although, unfortunately, not before
prompting for a login name, due to the nature of the protocol
design). By unchecking this option, display of the banner can be
suppressed entirely.
4.21.3 `Attempt authentication using Pageant'
If this option is enabled, then PuTTY will look for Pageant (the
SSH private-key storage agent) and attempt to authenticate with any
suitable public keys Pageant currently holds.
This behaviour is almost always desirable, and is therefore enabled
by default. In rare cases you might need to turn it off in order
to force authentication by some non-public-key method such as
passwords.
This option can also be controlled using the `-noagent' command-line
option. See section 3.8.3.9.
See chapter 9 for more information about Pageant in general.
username more than once, in case the server complains. If you know
your server can cope with it, you can enable the `Allow attempted
changes of username' option to modify PuTTY's behaviour.
4.21.8 `Private key file for authentication'
This box is where you enter the name of your private key file if you
are using public key authentication. See chapter 8 for information
about public key authentication in SSH.
This key must be in PuTTY's native format (`*.PPK'). If you have a
private key in another format that you want to use with PuTTY, see
section 8.2.12.
You can use the authentication agent Pageant so that you do not
need to explicitly configure a key here; see chapter 9. If a file
is specified here with Pageant running, PuTTY will first try asking
Pageant to authenticate with that key, and ignore any other keys
Pageant may have. If that fails, PuTTY will ask for a passphrase as
normal.
4.22 The GSSAPI panel
The `GSSAPI' subpanel of the `Auth' panel controls the use of
GSSAPI authentication. This is a mechanism which delegates the
authentication exchange to a library elsewhere on the client
machine, which in principle can authenticate in many different ways
but in practice is usually used with the Kerberos single sign-on
protocol.
GSSAPI is only available in the SSH-2 protocol.
The topmost control on the GSSAPI subpanel is the checkbox labelled
`Attempt GSSAPI authentication'. If this is disabled, GSSAPI will
not be attempted at all and the rest of this panel is unused. If it
is enabled, GSSAPI authentication will be attempted, and (typically)
if your client machine has valid Kerberos credentials loaded, then
PuTTY should be able to authenticate automatically to servers that
support Kerberos logins.
4.22.1 `Allow GSSAPI credential delegation'
GSSAPI credential delegation is a mechanism for passing on your
Kerberos (or other) identity to the session on the SSH server. If
you enable this option, then not only will PuTTY be able to log in
automatically to a server that accepts your Kerberos credentials,
but also you will be able to connect out from that server to other
Kerberos-supporting services and use the same credentials just as
automatically.
(This option is the Kerberos analogue of SSH agent forwarding; see
section 9.4 for some information on that.)
Note that, like SSH agent forwarding, there is a security
implication in the use of this option: the administrator of
the server you connect to, or anyone else who has cracked the
administrator account on that server, could fake your identity
ERASE is the
one space to
this follows
(see section
Some X clients probably do not even support XDM-AUTHORIZATION1, so they will not know what to do with the data PuTTY has
provided.
This authentication mechanism will only work in SSH-2. In SSH1, the SSH server does not tell the client the source address
of a forwarded connection in a machine-readable format, so it's
impossible to verify the XDM-AUTHORIZATION-1 data.
You may find this feature causes problems with some SSH servers,
which will not clean up XDM-AUTHORIZATION-1 data after a
session, so that if you then connect to the same server using
Enter a source port number into the `Source port' box. For local
forwardings, PuTTY will listen on this port of your PC. For
remote forwardings, your SSH server will listen on this port of
the remote machine. Note that most servers will not allow you to
listen on port numbers less than 1024.
The SSH-2 protocol does contain such a mechanism, but not all
SSH servers support it. (In particular, OpenSSH does not support
it in any version earlier than 3.9.)
If you ask to delete a remote port forwarding and PuTTY cannot make
the server actually stop listening on the port, it will instead
just start refusing incoming connections on that port. Therefore,
although the port cannot be reused by another program, you can at
least be reasonably sure that server-side programs can no longer
access the service at your end of the port forwarding.
If you delete a forwarding, any existing connections established
using that forwarding remain open. Similarly, changes to global
settings such as `Local ports accept connections from other hosts'
only take effect on new forwardings.
If the connection you are forwarding over SSH is itself a second
SSH connection made by another copy of PuTTY, you might find the
`logical host name' configuration option useful to warn PuTTY of
which host key it should be expecting. See section 4.13.5 for
details of this.
4.25.1 Controlling the visibility of forwarded ports
The source port for a forwarded connection usually does not accept
connections from any machine except the SSH client or server machine
itself (for local and remote forwardings respectively). There are
controls in the Tunnels panel to change this:
-
The `Remote ports do the same' option does the same thing for
remote-to-local port forwardings (so that machines other than
the SSH server machine can connect to the forwarded port.) Note
that this feature is only available in the SSH-2 protocol, and
not all SSH-2 servers support it (OpenSSH 3.0 does not, for
example).
`Off': PuTTY will assume the server does not have the bug.
`On': PuTTY will assume the server _does_ have the bug.
attempt.
If this bug is detected, PuTTY will go straight to password
authentication. If this bug is enabled when talking to a correct
server, the session will succeed, but of course RSA authentication
will be impossible.
This is an SSH-1-specific bug.
4.26.4 `Chokes on SSH-2 ignore messages'
An ignore message (SSH_MSG_IGNORE) is a message in the SSH protocol
which can be sent from the client to the server, or from the server
to the client, at any time. Either side is required to ignore the
message whenever it receives it. PuTTY uses ignore messages in
SSH-2 to confuse the encrypted data stream and make it harder to
cryptanalyse. It also uses ignore messages for connection keepalives
(see section 4.13.1).
If it believes the server to have this bug, PuTTY will stop using
ignore messages. If this bug is enabled when talking to a correct
server, the session will succeed, but keepalives will not work and
the session might be less cryptographically secure than it could be.
4.26.5 `Chokes on PuTTY's SSH-2 `winadj' requests'
PuTTY sometimes sends a special request to SSH servers in the middle
of channel data, with the name [email protected]
(see section F.1). The purpose of this request is to measure the
round-trip time to the server, which PuTTY uses to tune its flow
control. The server does not actually have to _understand_ the
message; it is expected to send back a SSH_MSG_CHANNEL_FAILURE
message indicating that it didn't understand it. (All PuTTY needs
for its timing calculations is _some_ kind of response.)
It has been known for some SSH servers to get confused by this
message in one way or another - because it has a long name, or
because they can't cope with unrecognised request names even to the
extent of sending back the correct failure response, or because they
handle it sensibly but fill up the server's log file with pointless
spam, or whatever. PuTTY therefore supports this bug-compatibility
flag: if it believes the server has this bug, it will never send
its `[email protected]' request, and will make do
without its timing data.
4.26.6 `Miscomputes SSH-2 HMAC keys'
Versions 2.3.0 and below of the SSH server software from ssh.com
compute the keys for their HMAC message authentication codes
incorrectly. A typical symptom of this problem is that PuTTY dies
unexpectedly at the beginning of the session, saying `Incorrect MAC
received on packet'.
If this bug is detected, PuTTY will compute its HMAC keys in the
same way as the buggy server, so that communication will still be
possible. If this bug is enabled when talking to a correct server,
communication will fail.
more about rekeys). Other, very old, SSH servers handle repeat key
exchange even more badly, and disconnect upon receiving a repeat key
exchange request.
If this bug is detected, PuTTY will never initiate a repeat key
exchange. If this bug is enabled when talking to a correct server,
the session should still function, but may be less secure than you
would expect.
This is an SSH-2-specific bug.
4.26.11 `Ignores SSH-2 maximum packet size'
When an SSH-2 channel is set up, each end announces the maximum size
of data packet that it is willing to receive for that channel. Some
servers ignore PuTTY's announcement and send packets larger than
PuTTY is willing to accept, causing it to report `Incoming packet
was garbled on decryption'.
If this bug is detected, PuTTY never allows the channel's flowcontrol window to grow large enough to allow the server to send an
over-sized packet. If this bug is enabled when talking to a correct
server, the session will work correctly, but download performance
will be less than it could be.
4.26.12 `Replies to requests on closed channels'
The SSH protocol as published in RFC 4254 has an ambiguity which
arises if one side of a connection tries to close a channel, while
the other side simultaneously sends a request within the channel and
asks for a reply. RFC 4254 leaves it unclear whether the closing
side should reply to the channel request after having announced its
intention to close the channel.
Discussion on the ietf-ssh mailing list in April 2014 formed a clear
consensus that the right answer is no. However, because of the
ambiguity in the specification, some SSH servers have implemented
the other policy; for example, OpenSSH used to until it was fixed.
Because PuTTY sends channel requests with the `want reply'
flag throughout channels' lifetime (see section 4.26.5), it's
possible that when connecting to such a server it might receive
a reply to a request after it thinks the channel has entirely
closed, and terminate with an error along the lines of `Received
SSH2_MSG_CHANNEL_FAILURE for nonexistent channel 256'.
4.27 The Serial panel
The Serial panel allows you to configure options that only apply
when PuTTY is connecting to a local serial line.
4.27.1 Selecting a serial line to connect to
The `Serial line to connect to' box allows you to choose which
serial line you want PuTTY to talk to, if your computer has more
than one serial port.
`RTS/CTS': flow control is done using the RTS and CTS wires on
the serial line.
`DSR/DTR': flow control is done using the DSR and DTR wires on
the serial line.
PSCP, the PuTTY Secure Copy client, is a tool for transferring files
securely between computers using an SSH connection.
If you have an SSH-2 server, you might prefer PSFTP (see chapter
6) for interactive use. PSFTP does not in general work with SSH-1
servers, however.
5.1 Starting PSCP
PSCP is a command line application. This means that you cannot just
double-click on its icon to run it and instead you have to bring up
a console window. With Windows 95, 98, and ME, this is called an
`MS-DOS Prompt' and with Windows NT, 2000, and XP, it is called a
`Command Prompt'. It should be available from the Programs section
of your Start Menu.
To start PSCP it will need either to be on your `PATH' or in your
current directory. To add the directory containing PSCP to your
`PATH' environment variable, type into the console window:
set PATH=C:\path\to\putty\directory;%PATH%
This will only work for the lifetime of that particular console
window. To set your `PATH' more permanently on Windows NT, 2000, and
XP, use the Environment tab of the System Control Panel. On Windows
95, 98, and ME, you will need to edit your `AUTOEXEC.BAT' to include
a `set' command like the one above.
5.2 PSCP Usage
Once you've got a console window to type into, you can just type
`pscp' on its own to bring up a usage message. This tells you the
version of PSCP you're using, and gives you a brief summary of how
to use PSCP:
Z:\owendadmin>pscp
PuTTY Secure Copy client
Release 0.64
Usage: pscp [options] [user@]host:source target
pscp [options] source [source...] [user@]host:target
pscp [options] -ls [user@]host:filespec
Options:
-V
print version information and exit
-pgpfp
print PGP key fingerprints and exit
-p
preserve file attributes
-q
quiet, don't show statistics
-r
copy directories recursively
-v
show verbose messages
-load sessname Load settings from saved session
-P port
connect to specified port
-l user
connect with specified username
-pw passw login with specified password
-1 -2
force use of particular SSH protocol version
-4 -6
force use of IPv4 or IPv6
-C
enable compression
-i key
private key file for user authentication
-noagent disable use of Pageant
-agent
enable use of Pageant
-hostkey aa:bb:cc:...
manually specify a host key (may be repeated)
-batch
disable all interactive prompts
-unsafe
allow server-side wildcards (DANGEROUS)
-sftp
force use of SFTP protocol
-scp
force use of SCP protocol
(PSCP's interface is much like the Unix `scp' command, if you're
familiar with that.)
5.2.1 The basics
To receive (a) file(s) from a remote server:
pscp [options] [user@]host:source target
So to copy the file `/etc/hosts' from the server `example.com' as
user `fred' to the file `c:\temp\example-hosts.txt', you would type:
pscp [email protected]:/etc/hosts c:\temp\example-hosts.txt
To send (a) file(s) to a remote server:
pscp [options] source [source...] [user@]host:target
So to copy the local file `c:\documents\foo.txt' to the server
`example.com' as user `fred' to the file `/tmp/foo' you would type:
pscp c:\documents\foo.txt [email protected]:/tmp/foo
You can use wildcards to transfer multiple files in either
direction, like this:
pscp c:\documents\*.doc [email protected]:docfiles
pscp [email protected]:source/*.c c:\source
However, in the second case (using a wildcard for multiple remote
files) you may see a warning saying something like `warning: remote
host tried to write to a file called `terminal.c' when we requested
a file called `*.c'. If this is a wildcard, consider upgrading to
SSH-2 or using the `-unsafe' option. Renaming of this file has been
disallowed'.
This is due to a fundamental insecurity in the old-style SCP
protocol: the client sends the wildcard string (`*.c') to the
server, and the server sends back a sequence of file names that
match the wildcard pattern. However, there is nothing to stop the
server sending back a _different_ pattern and writing over one of
your other files: if you request `*.c', the server might send back
the file name `AUTOEXEC.BAT' and install a virus for you. Since the
wildcard matching rules are decided by the server, the client cannot
reliably verify that the filenames sent back match the pattern.
PSCP will attempt to use the newer SFTP protocol (part of SSH-2)
where possible, which does not suffer from this security flaw. If
you are talking to an SSH-2 server which supports SFTP, you will
never see this warning. (You can force use of the SFTP protocol, if
available, with `-sftp' - see section 5.2.2.6.)
If you really need to use a server-side wildcard with an SSH-1
server, you can use the `-unsafe' command line option with PSCP:
pscp -unsafe [email protected]:source/*.c c:\source
This will suppress the warning message and the file transfer will
happen. However, you should be aware that by using this option you
are giving the server the ability to write to _any_ file in the
target directory, so you should only use this option if you trust
the server administrator not to be malicious (and not to let the
server machine be cracked by malicious people). Alternatively, do
any such download in a newly created empty directory. (Even in
`unsafe' mode, PSCP will still protect you against the server trying
to get out of that directory using pathnames including `..'.)
5.2.1.1 `user'
The login name on the remote server. If this is omitted, and `host'
is a PuTTY saved session, PSCP will use any username specified by
that saved session. Otherwise, PSCP will attempt to use the local
Windows username.
5.2.1.2 `host'
The name of the remote server, or the name of an existing PuTTY
saved session. In the latter case, the session's settings for
hostname, port number, cipher type and username will be used.
5.2.1.3 `source'
One or more source files. Wildcards are allowed. The syntax of
wildcards depends on the system to which they apply, so if you are
copying _from_ a Windows system _to_ a UNIX system, you should use
Windows wildcard syntax (e.g. `*.*'), but if you are copying _from_
a UNIX system _to_ a Windows system, you would use the wildcard
syntax allowed by your UNIX shell (e.g. `*').
If the source is a remote server and you do not specify a full
pathname (in UNIX, a pathname beginning with a `/' (slash)
character), what you specify as a source will be interpreted
relative to your home directory on the remote server.
5.2.1.4 `target'
The filename or directory to put the file(s). When copying from a
remote server to a local host, you may wish simply to place the
file(s) in the current directory. To do this, you should specify a
target of `.'. For example:
pscp [email protected]:/home/tom/.emacs .
...would copy `/home/tom/.emacs' on the remote server to the current
directory.
168 kB |
13%
The fields in this display are (from left to right), filename, size
(in kilobytes) of file transferred so far, estimate of how fast the
file is being transferred (in kilobytes per second), estimated time
that the transfer will be complete, and percentage of the file so
far transferred. The `-q' option to PSCP suppresses the printing of
these statistics.
5.2.2.4 `-r' copies directories recursively
By default, PSCP will only copy files. Any directories you specify
to copy will be skipped, as will their contents. The `-r' option
tells PSCP to descend into any directories you specify, and to copy
them and their contents. This allows you to use PSCP to transfer
whole directory structures between machines.
Run PuTTY, and create a PuTTY saved session (see section 4.1.2)
which specifies your private key file (see section 4.21.8). You
will probably also want to specify a username to log in as (see
section 4.14.1).
In PSCP, you can now use the name of the session instead of
a hostname: type `pscp sessionname:file localfile', where
`sessionname' is replaced by the name of your saved session.
Secondly, you can supply the name of a private key file on the
command line, with the `-i' option. See section 3.8.3.18 for more
information.
Thirdly, PSCP will attempt to authenticate using Pageant if Pageant
is running (see chapter 9). So you would do this:
-
PSCP should work on virtually every SSH server. PSFTP uses the
new SFTP protocol, which is a feature of SSH-2 only. (PSCP
will also use this protocol if it can, but there is an SSH-1
equivalent it can fall back to if it cannot.)
psftp server.example.com
or perhaps
psftp [email protected]
Alternatively, if you just type `psftp' on its own (or double-click
the PSFTP icon in the Windows GUI), you will see the PSFTP prompt,
and a message telling you PSFTP has not connected to any server:
C:\>psftp
psftp: no hostname specified; use "open host.name" to connect
psftp>
At this point you can type `open server.example.com' or
`open [email protected]' to start a session.
PSFTP accepts all the general command line options supported by the
PuTTY tools, except the ones which make no sense in a file transfer
utility. See section 3.8.3 for a description of these options. (The
ones not supported by PSFTP are clearly marked.)
PSFTP also supports some of its own options. The following sections
describe PSFTP's specific command-line options.
6.1.1 `-b': specify a file containing batch commands
In normal operation, PSFTP is an interactive program which displays
a command line and accepts commands from the keyboard.
If you need to do automated tasks with PSFTP, you would probably
prefer to specify a set of commands in advance and have them
executed automatically. The `-b' option allows you to do this. You
use it with a file name containing batch commands. For example, you
might create a file called `myscript.scr' containing lines like
this:
cd /home/ftp/users/jeff
del jam-old.tar.gz
ren jam.tar.gz jam-old.tar.gz
put jam.tar.gz
chmod a+r jam.tar.gz
and then you could run the script by typing
psftp user@hostname -b myscript.scr
When you run a batch script in this way, PSFTP will abort the script
if any command fails to complete successfully. To change this
behaviour, you can add the `-be' option (section 6.1.3).
PSFTP will terminate after it finishes executing the batch script.
6.1.2 `-bc': display batch commands as they are run
The `-bc' option alters what PSFTP displays while processing a
batch script specified with `-b'. With the `-bc' option, PSFTP will
display prompts and commands just as if the commands had been typed
at the keyboard. So instead of seeing this:
C:\>psftp fred@hostname -b batchfile
Sent username "fred"
Remote working directory is /home/fred
Listing directory /home/fred/lib
drwxrwsr-x
4 fred
fred
1024
drwxr-sr-x
25 fred
fred
2048
drwxrwsr-x
3 fred
fred
1024
lrwxrwxrwx
1 fred
fred
24
drwxrwsr-x
2 fred
fred
1024
Sep
Dec
Apr
Apr
Mar
6 10:42 .
14 09:36 ..
17 2000 jed
17 2000 timber
13 2000 trn
Sep
Dec
Apr
Apr
Mar
6 10:42 .
14 09:36 ..
17 2000 jed
17 2000 timber
13 2000 trn
For example, if you type `get filename.dat' then PSFTP will look for
`filename.dat' in your remote working directory on the server.
To change your remote working directory, use the `cd' command. If
you don't provide an argument, `cd' will return you to your home
directory on the server (more precisely, the remote directory you
were in at the start of the connection).
To display your current remote working directory, type `pwd'.
6.2.8 The `lcd' and `lpwd' commands: changing the local working directory
As well as having a working directory on the remote server, PSFTP
also has a working directory on your local machine (just like
any other Windows process). This is the default local directory
that other commands will operate on. For example, if you type
`get filename.dat' then PSFTP will save the resulting file as
`filename.dat' in your local working directory.
To change your local working directory, use the `lcd' command. To
display your current local working directory, type `lpwd'.
6.2.9 The `get' command: fetch a file from the server
To download a file from the server and store it on your local PC,
you use the `get' command.
In its simplest form, you just use this with a file name:
get myfile.dat
If you want to store the file locally under a different name,
specify the local file name after the remote one:
get myfile.dat newname.dat
This will fetch the file on the server called `myfile.dat', but will
save it to your local machine under the name `newname.dat'.
To fetch an entire directory recursively, you can use the `-r'
option:
get -r mydir
get -r mydir newname
(If you want to fetch a file whose name starts with a hyphen, you
may have to use the `--' special argument, which stops `get' from
interpreting anything as a switch after it. For example, `get -- silly-name-'.)
6.2.10 The `put' command: send a file to the server
To upload a file to the server from your local PC, you use the `put'
command.
In its simplest form, you just use this with a file name:
put myfile.dat
If you want to store the file remotely under a different name,
specify the remote file name after the local one:
put myfile.dat newname.dat
This will send the local file called `myfile.dat', but will store it
on the server under the name `newname.dat'.
To send an entire directory recursively, you can use the `-r'
option:
put -r mydir
put -r mydir newname
(If you want to send a file whose name starts with a hyphen, you
may have to use the `--' special argument, which stops `put' from
interpreting anything as a switch after it. For example, `put -- silly-name-'.)
6.2.11 The `mget' and `mput' commands: fetch or send multiple files
`mget' works almost exactly like `get', except that it allows you to
specify more than one file to fetch at once. You can do this in two
ways:
-
In addition to all this, there are a few extra special cases for
Unix systems. On non-Unix systems these are unlikely to be useful:
-
You can specify `u+s' and `u-s' to add or remove the Unix setuser-ID bit. This is typically only useful for special purposes;
refer to your Unix documentation if you're not sure about it.
You can specify `g+s' and `g-s' to add or remove the Unix setgroup-ID bit. On a file, this works similarly to the set-userID bit (see your Unix documentation again); on a directory it
ensures that files created in the directory are accessible by
members of the group that owns the directory.
Run PuTTY, and create a PuTTY saved session (see section 4.1.2)
which specifies your private key file (see section 4.21.8). You
will probably also want to specify a username to log in as (see
section 4.14.1).
In PSFTP, you can now use the name of the session instead of
a hostname: type `psftp sessionname', where `sessionname' is
replaced by the name of your saved session.
Secondly, you can supply the name of a private key file on the
command line, with the `-i' option. See section 3.8.3.18 for more
information.
Thirdly, PSFTP will attempt to authenticate using Pageant if Pageant
is running (see chapter 9). So you would do this:
-
XP, use the Environment tab of the System Control Panel. On Windows
95, 98, and ME, you will need to edit your `AUTOEXEC.BAT' to include
a `set' command like the one above.
7.2 Using Plink
This section describes the basics of how to use Plink for
interactive logins and for automated processes.
Once you've got a console window to type into, you can just type
`plink' on its own to bring up a usage message. This tells you the
version of Plink you're using, and gives you a brief summary of how
to use Plink:
Z:\sysosd>plink
Plink: command-line connection utility
Release 0.64
Usage: plink [options] [user@]host [command]
("host" can also be a PuTTY saved session name)
Options:
-V
print version information and exit
-pgpfp
print PGP key fingerprints and exit
-v
show verbose messages
-load sessname Load settings from saved session
-ssh -telnet -rlogin -raw -serial
force use of a particular protocol
-P port
connect to specified port
-l user
connect with specified username
-batch
disable all interactive prompts
-sercfg configuration-string (e.g. 19200,8,n,1,X)
Specify the serial configuration (serial only)
The following options only apply to SSH connections:
-pw passw login with specified password
-D [listen-IP:]listen-port
Dynamic SOCKS-based port forwarding
-L [listen-IP:]listen-port:host:port
Forward local port to remote address
-R [listen-IP:]listen-port:host:port
Forward remote port to local address
-X -x
enable / disable X11 forwarding
-A -a
enable / disable agent forwarding
-t -T
enable / disable pty allocation
-1 -2
force use of particular protocol version
-4 -6
force use of IPv4 or IPv6
-C
enable compression
-i key
private key file for user authentication
-noagent disable use of Pageant
-agent
enable use of Pageant
-hostkey aa:bb:cc:...
manually specify a host key (may be repeated)
-m file
read remote command(s) from file
-s
remote command is an SSH subsystem (SSH-2 only)
-N
don't start a shell/command (SSH-2 only)
-nc host:port
open tunnel in place of session (SSH-2 only)
Once this works, you are ready to use Plink.
Set up a PuTTY saved session that describes the server you are
connecting to, and that also specifies the protocol as SSH.
Use the `-l' option to specify a user name on the command line.
For example, `plink login.example.com -l fred'.
Set up a PuTTY saved session that describes the server you are
connecting to, and that also specifies the username to log in as
(see section 4.14.1).
Once you have done all this, you should be able to run a remote
command on the SSH server machine and have it execute automatically
with no prompting:
Z:\sysosd>plink login.example.com -l fred echo hello, world
hello, world
Z:\sysosd>
Or, if you have set up a saved session with all the connection
details:
Z:\sysosd>plink mysession echo hello, world
hello, world
Z:\sysosd>
Then you can set up other programs to run this Plink command and
talk to it as if it were a process on the server machine.
7.2.3 Plink command line options
Plink accepts all the general command line options supported by the
PuTTY tools. See section 3.8.3 for a description of these options.
Plink also supports some of its own options. The following sections
describe Plink's specific command-line options.
7.2.3.1 `-batch': disable all interactive prompts
If you use the `-batch' option, Plink will never give an interactive
prompt while establishing the connection. If the server's host key
is invalid, for example (see section 2.2), then the connection will
simply be abandoned instead of asking you what to do next.
This may help Plink's behaviour when it is used in automated
scripts: using `-batch', if something goes wrong at connection time,
the batch job will fail rather than hang.
7.2.3.2 `-s': remote command is SSH subsystem
If you specify the `-s' option, Plink passes the specified command
as the name of an SSH `subsystem' rather than an ordinary command
line.
(This option is only meaningful with the SSH-2 protocol.)
7.3 Using Plink in batch files and scripts
Once you have set up Plink to be able to log in to a remote server
without any interactive prompting (see section 7.2.2), you can use
it for lots of scripting and batch purposes. For example, to start a
backup on a remote machine, you might use a command like:
plink root@myserver /etc/backups/do-backup.sh
Or perhaps you want to fetch all system log lines relating to a
particular web area:
plink mysession grep /~fred/ /var/log/httpd/access.log > fredlog
Any non-interactive command you could usefully run on the server
command line, you can run in a batch file using Plink in this way.
7.4 Using Plink with CVS
To use Plink with CVS, you need to set the environment variable
`CVS_RSH' to point to Plink:
set CVS_RSH=\path\to\plink.exe
You also need to arrange to be able to connect to a remote host
without any interactive prompts, as described in section 7.2.2.
Once you have generated the key, select a comment field (section
8.2.6) and a passphrase (section 8.2.7).
Now you're ready to save the private key to disk; press the
`Save private key' button. (See section 8.2.8).
Your key pair is now ready for use. You may also want to copy the
public key to your server, either by copying it out of the `Public
key for pasting into authorized_keys file' box (see section 8.2.10),
or by using the `Save public key' button (section 8.2.9). However,
you don't need to do this immediately; if you want, you can load the
private key back into PuTTYgen later (see section 8.2.11) and the
public key will be available for copying and pasting again.
Section 8.3 describes the typical process of configuring PuTTY to
attempt public-key authentication, and configuring your SSH server
to accept it.
8.2.2 Selecting the type of key
Before generating a key pair using PuTTYgen, you need to select
which type of key you need. PuTTYgen currently supports three types
of key:
-
The SSH-1 protocol only supports RSA keys; if you will be connecting
using the SSH-1 protocol, you must select the first key type or your
key will be completely useless.
The SSH-2 protocol supports more than one key type. The two types
supported by PuTTY are RSA and DSA.
The PuTTY developers _strongly_ recommend you use RSA. DSA has an
intrinsic weakness which makes it very easy to create a signature
which contains enough information to give away the _private_ key!
This would allow an attacker to pretend to be you for any number
of future sessions. PuTTY's implementation has taken very careful
precautions to avoid this weakness, but we cannot be 100% certain we
have managed it, and if you have the choice we strongly recommend
using RSA keys instead.
If you really need to connect to an SSH server which only supports
DSA, then you probably have no choice but to use DSA. If you do use
DSA, we recommend you do not use the same key to authenticate with
more than one server.
For other SSH server software, you should refer to the manual
for that server.
You may also need to ensure that your home directory, your `.ssh'
directory, and any other files involved (such as `authorized_keys',
`authorized_keys2' or `authorization') are not group-writable or
world-writable. You can typically do this by using a command such as
chmod go-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys
Your server should now be configured to accept authentication using
your private key. Now you need to configure PuTTY to _attempt_
authentication using your private key. You can do this in any of
three ways:
-
Specify the key file on the command line with the `-i' option.
See section 3.8.3.18 for details.
Load the private key into Pageant (see chapter 9). In this case
PuTTY will automatically try to use it for authentication if it
can.
The type of the key. Currently, this can be `ssh1' (an RSA key
for use with the SSH-1 protocol), `ssh-rsa' (an RSA key for use
with the SSH-2 protocol), or `ssh-dss' (a DSA key for use with
the SSH-2 protocol).
The fingerprint for the public key. This should be the same
fingerprint given by PuTTYgen, and (hopefully) also the same
fingerprint shown by remote utilities such as `ssh-keygen' when
applied to your `authorized_keys' file.
You can arrange for Pageant to start another program once it has
initialised itself and loaded any keys specified on its command
line. This program (perhaps a PuTTY, or a WinCVS making use of
Plink, or whatever) will then be able to use the keys Pageant has
loaded.
You do this by specifying the `-c' option followed by the command,
like this:
C:\PuTTY\pageant.exe d:\main.ppk -c C:\PuTTY\putty.exe
9.4 Using agent forwarding
Agent forwarding is a mechanism that allows applications on your SSH
server machine to talk to the agent on your client machine.
Note that at present, agent forwarding in SSH-2 is only available
when your SSH server is OpenSSH. The ssh.com server uses a different
agent protocol, which PuTTY does not yet support.
To enable agent forwarding, first
PuTTY SSH session in which `Allow
section 4.21.6). Open the session
use the `-A' command line option;
If this has worked, your applications on the server should now have
access to a Unix domain socket which the SSH server will forward
back to PuTTY, and PuTTY will forward on to the agent. To check that
this has actually happened, you can try this command on Unix server
machines:
unixbox:~$ echo $SSH_AUTH_SOCK
/tmp/ssh-XXNP18Jz/agent.28794
unixbox:~$
If the result line comes up blank, agent forwarding has not been
enabled at all.
Now if you run `ssh' on the server and use it to connect through to
another server that accepts one of the keys in Pageant, you should
be able to log in without a password:
unixbox:~$ ssh -v otherunixbox
[...]
debug: next auth method to try is publickey
debug: userauth_pubkey_agent: trying agent key my-putty-key
debug: ssh-userauth2 successful: method publickey
[...]
If you enable agent forwarding on _that_ SSH connection as well (see
the manual for your server-side SSH client to find out how to do
this), your authentication keys will still be available on the next
machine you connect to - two SSH connections away from where they're
actually stored.
In addition, if you have a private key on one of the SSH servers,
you can send it all the way back to Pageant using the local `sshadd' command:
unixbox:~$ ssh-add ~/.ssh/id_rsa
Need passphrase for /home/fred/.ssh/id_rsa
Enter passphrase for /home/fred/.ssh/id_rsa:
Identity added: /home/fred/.ssh/id_rsa (/home/simon/.ssh/id_rsa)
unixbox:~$
and then it's available to every machine that has agent forwarding
available (not just the ones downstream of the place you added it).
9.5 Security considerations
Using Pageant for public-key authentication gives you the
convenience of being able to open multiple SSH sessions without
having to type a passphrase every time, but also gives you the
security benefit of never storing a decrypted private key on disk.
Many people feel this is a good compromise between security and
convenience.
It _is_ a compromise, however. Holding your decrypted private keys
in Pageant is better than storing them in easy-to-find disk files,
but still less secure than not storing them anywhere at all. This is
for two reasons:
-
can therefore log in to other machines as you. They can only do this
to a limited extent - when the agent forwarding disappears they
lose the ability - but using Pageant doesn't actually _prevent_ the
sysadmin (or hackers) on the server from doing this.
Therefore, if you don't trust the sysadmin of a server machine, you
should _never_ use agent forwarding to that machine. (Of course you
also shouldn't store private keys on that machine, type passphrases
into it, or log into other machines from it in any way at all;
Pageant is hardly unique in this respect.)
Chapter 10: Common error messages
--------------------------------This chapter lists a number of common error messages which PuTTY and
its associated tools can produce, and explains what they mean in
more detail.
We do not attempt to list _all_ error messages here: there are many
which should never occur, and some which should be self-explanatory.
If you get an error message which is not listed in this chapter and
which you don't understand, report it to us as a bug (see appendix
B) and we will add documentation for it.
10.1 `The server's host key is not cached in the registry'
This error message occurs when PuTTY connects to a new SSH server.
Every server identifies itself by means of a host key; once PuTTY
knows the host key for a server, it will be able to detect if a
malicious attacker redirects your connection to another machine.
If you see this message, it means that PuTTY has not seen this host
key before, and has no way of knowing whether it is correct or not.
You should attempt to verify the host key by other means, such as
asking the machine's administrator.
If you see this message and you know that your installation of PuTTY
_has_ connected to the same server before, it may have been recently
upgraded to SSH protocol version 2. SSH protocols 1 and 2 use
separate host keys, so when you first use SSH-2 with a server you
have only used SSH-1 with before, you will see this message again.
You should verify the correctness of the key as before.
See section 2.2 for more information on host keys.
10.2 `WARNING - POTENTIAL SECURITY BREACH!'
This message, followed by `The server's host key does not match
the one PuTTY has cached in the registry', means that PuTTY has
connected to the SSH server before, knows what its host key _should_
be, but has found a different one.
This may mean that a malicious attacker has replaced your server
with a different one, or has redirected your network connection
to their own machine. On the other hand, it may simply mean that
the administrator of your server has accidentally changed the key
while upgrading the SSH software; this _shouldn't_ happen but it is
unfortunately possible.
You should contact your server's administrator and see whether they
expect the host key to have changed. If so, verify the new host key
in the same way as you would if it was new.
See section 2.2 for more information on host keys.
10.3 `The first cipher supported by the server is ... below the
configured warning threshold'
This occurs when the SSH server does not offer any ciphers which you
have configured PuTTY to consider strong enough. By default, PuTTY
puts up this warning only for single-DES and Arcfour encryption.
See section 4.20 for more information on this message.
10.4 `Server sent disconnect message type 2 (protocol error): "Too many
authentication failures for root"'
This message is produced by an OpenSSH (or Sun SSH) server if it
receives more failed authentication attempts than it is willing to
tolerate.
This can easily happen if you are using Pageant and have a large
number of keys loaded into it, since these servers count each offer
of a public key as an authentication attempt. This can be worked
around by specifying the key that's required for the authentication
in the PuTTY configuration (see section 4.21.8); PuTTY will ignore
any other keys Pageant may have, but will ask Pageant to do the
authentication, so that you don't have to type your passphrase.
On the server, this can be worked around by disabling public-key
authentication or (for Sun SSH only) by increasing `MaxAuthTries' in
`sshd_config'.
10.5 `Out of memory'
This occurs when PuTTY tries to allocate more memory than the system
can give it. This _may_ happen for genuine reasons: if the computer
really has run out of memory, or if you have configured an extremely
large number of lines of scrollback in your terminal. PuTTY is
not able to recover from running out of memory; it will terminate
immediately after giving this error.
However, this error can also occur when memory is not running out at
all, because PuTTY receives data in the wrong format. In SSH-2 and
also in SFTP, the server sends the length of each message before the
message itself; so PuTTY will receive the length, try to allocate
space for the message, and then receive the rest of the message.
If the length PuTTY receives is garbage, it will try to allocate
a ridiculous amount of memory, and will terminate with an `Out of
memory' error.
This can happen in SSH-2, if PuTTY and the server have not enabled
encryption in the same way (see question A.7.5 in the FAQ). Some
versions of OpenSSH have a known problem with this: see question
A.7.16.
This can also happen in PSCP or PSFTP, if your login scripts on the
server generate output: the client program will be expecting an
SFTP message starting with a length, and if it receives some text
from your login scripts instead it will try to interpret them as a
message length. See question A.7.6 for details of this.
10.6 `Internal error', `Internal fault', `Assertion failed'
Any error beginning with the word `Internal' should _never_ occur.
If it does, there is a bug in PuTTY by definition; please see
appendix B and report it to us.
Similarly, any error message starting with `Assertion failed' is a
bug in PuTTY. Please report it to us, and include the exact text
from the error message box.
10.7 `Unable to use this private key file', `Couldn't load private key',
`Key is of wrong type'
Various forms of this error are printed in the PuTTY window, or
written to the PuTTY Event Log (see section 3.1.3.1) when trying
public-key authentication, or given by Pageant when trying to load a
private key.
If you see one of these messages, it often indicates that you've
tried to load a key of an inappropriate type into PuTTY, Plink,
PSCP, PSFTP, or Pageant.
You may have specified a key that's inappropriate for the connection
you're making. The SSH-1 and SSH-2 protocols require different
private key formats, and a SSH-1 key can't be used for a SSH-2
connection (or vice versa).
Alternatively, you may have tried to load an SSH-2 key in a
`foreign' format (OpenSSH or ssh.com) directly into one of the PuTTY
tools, in which case you need to import it into PuTTY's native
format (`*.PPK') using PuTTYgen - see section 8.2.12.
10.8 `Server refused our public key' or `Key refused'
Various forms of this error are printed in the PuTTY window, or
written to the PuTTY Event Log (see section 3.1.3.1) when trying
public-key authentication.
If you see one of these messages, it means that PuTTY has sent a
public key to the server and offered to authenticate with it, and
the server has refused to accept authentication. This usually means
that the server is not configured to accept this key to authenticate
this user.
This is almost certainly not a problem with PuTTY. If you see
this type of message, the first thing you should do is check your
_server_ configuration carefully. Common errors include having the
wrong permissions or ownership set on the public key or the user's
home directory on the server. Also, read the PuTTY Event Log; the
If you get this error, one thing you could try would be to fiddle
with the setting of `Miscomputes SSH-2 encryption keys' (see section
4.26.7) or `Ignores SSH-2 maximum packet size' (see section 4.26.11)
on the Bugs panel .
Another known server problem which can cause this error is described
in question A.7.16 in the FAQ.
10.13 `PuTTY X11 proxy: _various errors_'
This family of errors are reported when PuTTY is doing X forwarding.
They are sent back to the X application running on the SSH server,
which will usually report the error to the user.
When PuTTY enables X forwarding (see section 3.4) it creates a
virtual X display running on the SSH server. This display requires
authentication to connect to it (this is how PuTTY prevents other
users on your server machine from connecting through the PuTTY proxy
to your real X display). PuTTY also sends the server the details it
needs to enable clients to connect, and the server should put this
mechanism in place automatically, so your X applications should just
work.
A common reason why people see one of these messages is because they
used SSH to log in as one user (let's say `fred'), and then used
the Unix `su' command to become another user (typically `root').
The original user, `fred', has access to the X authentication data
provided by the SSH server, and can run X applications which are
forwarded over the SSH connection. However, the second user (`root')
does not automatically have the authentication data passed on to it,
so attempting to run an X application as that user often fails with
this error.
If this happens, _it is not a problem with PuTTY_. You need to
arrange for your X authentication data to be passed from the user
you logged in as to the user you used `su' to become. How you do
this depends on your particular system; in fact many modern versions
of `su' do it automatically.
10.14 `Network error: Software caused connection abort'
This is a generic error produced by the Windows network code when
it kills an established connection for some reason. For example, it
might happen if you pull the network cable out of the back of an
Ethernet-connected computer, or if Windows has any other similar
reason to believe the entire network has become unreachable.
Windows also generates this error if it has given up on the machine
at the other end of the connection ever responding to it. If the
network between your client and server goes down and your client
then tries to send some data, Windows will make several attempts
to send the data and will then give up and kill the connection. In
particular, this can occur even if you didn't type anything, if you
are using SSH-2 and PuTTY attempts a key re-exchange. (See section
4.19.2 for more about key re-exchange.)
(It can also occur if you are using keepalives in your connection.
Other people have reported that keepalives _fix_ this error for
them. See section 4.13.1 for a discussion of the pros and cons of
keepalives.)
We are not aware of any reason why this error might occur that would
represent a bug in PuTTY. The problem is between you, your Windows
system, your network and the remote system.
10.15 `Network error: Connection reset by peer'
This error occurs when the machines at each end of a network
connection lose track of the state of the connection between them.
For example, you might see it if your SSH server crashes, and
manages to reboot fully before you next attempt to send data to it.
However, the most common reason to see this message is if you are
connecting through a firewall or a NAT router which has timed the
connection out. See question A.7.10 in the FAQ for more details.
You may be able to improve the situation by using keepalives; see
section 4.13.1 for details on this.
Note that Windows can produce this error in some circumstances
without seeing a connection reset from the server, for instance if
the connection to the network is lost.
10.16 `Network error: Connection refused'
This error means that the network connection PuTTY tried to make to
your server was rejected by the server. Usually this happens because
the server does not provide the service which PuTTY is trying to
access.
Check that you are connecting with the correct protocol (SSH, Telnet
or Rlogin), and check that the port number is correct. If that
fails, consult the administrator of your server.
10.17 `Network error: Connection timed out'
This error means that the network connection PuTTY tried to make to
your server received no response at all from the server. Usually
this happens because the server machine is completely isolated from
the network, or because it is turned off.
Check that you have correctly entered the host name or IP address
of your server machine. If that fails, consult the administrator of
your server.
Unix also generates this error when it tries to send data down a
connection and contact with the server has been completely lost
during a connection. (There is a delay of minutes before Unix gives
up on receiving a reply from the server.) This can occur if you type
things into PuTTY while the network is down, but it can also occur
if PuTTY decides of its own accord to send data: due to a repeat key
exchange in SSH-2 (see section 4.19.2) or due to keepalives (section
4.13.1).
try the changes page, and see if you can find the feature on
there. If a feature is listed there, it's been implemented. If
it's listed as a change made _since_ the latest version, it
should be available in the development snapshots, in which case
testing will be very welcome.
try the Wishlist page, and see if you can find the feature
there. If it's on there, and not in the `Recently fixed'
section, it probably _hasn't_ been implemented.
but there doesn't seem to be much point since SSH supports public
key authentication, which is more flexible and more secure. See
chapter 8 in the documentation for a full discussion of public key
authentication.
A.2.9 Is there an option to turn off the annoying host key prompts?
No, there isn't. And there won't be. Even if you write it yourself
and send us the patch, we won't accept it.
Those annoying host key prompts are the _whole point_ of SSH.
Without them, all the cryptographic technology SSH uses to secure
your session is doing nothing more than making an attacker's job
slightly harder; instead of sitting between you and the server with
a packet sniffer, the attacker must actually subvert a router and
start modifying the packets going back and forth. But that's not all
that much harder than just sniffing; and without host key checking,
it will go completely undetected by client or server.
Host key checking is your guarantee that the encryption you put
on your data at the client end is the _same_ encryption taken off
the data at the server end; it's your guarantee that it hasn't
been removed and replaced somewhere on the way. Host key checking
makes the attacker's job _astronomically_ hard, compared to packet
sniffing, and even compared to subverting a router. Instead of
applying a little intelligence and keeping an eye on Bugtraq, the
attacker must now perform a brute-force attack against at least one
military-strength cipher. That insignificant host key prompt really
does make _that_ much difference.
If you're having a specific problem with host key checking - perhaps
you want an automated batch job to make use of PSCP or Plink, and
the interactive host key prompt is hanging the batch process then the right way to fix it is to add the correct host key to the
Registry in advance, or if the Registry is not available, to use the
-hostkey command-line option. That way, you retain the _important_
feature of host key checking: the right key will be accepted and the
wrong ones will not. Adding an option to turn host key checking off
completely is the wrong solution and we will not do it.
If you have host keys available in the common `known_hosts' format,
we have a script called `kh2reg.py' to convert them to a Windows
.REG file, which can be installed ahead of time by double-clicking
or using `REGEDIT'.
A.2.10 Will you write an SSH server for the PuTTY suite, to go with the
client?
No. The only reason we might want to would be if we could easily reuse existing code and significantly cut down the effort. We don't
believe this is the case; there just isn't enough common ground
between an SSH client and server to make it worthwhile.
If someone else wants
a Windows SSH server,
I really can't see it
it would be for us to
A native (Cocoa) Mac OS X port has been started. It's just about
usable, but is of nowhere near release quality yet, and is
likely to behave in unexpected ways. Currently it's unlikely to
be completed unless someone steps in to help.
iPhone and
on PuTTY. (This
which is a
question A.3.2.)
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\RandSeedFile
You can ask PuTTY to delete all this data; see question A.8.2.
On Unix, PuTTY stores all of this data in a directory ~/.putty.
A.6 HOWTO questions
A.6.1 What login name / password should I use?
This is not a question you should be asking _us_.
PuTTY is a communications tool, for making connections to other
computers. We maintain the tool; we _don't_ administer any computers
that you're likely to be able to use, in the same way that the
people who make web browsers aren't responsible for most of the
content you can view in them. We cannot help with questions of this
sort.
If you know the name of the computer you want to connect to, but
don't know what login name or password to use, you should talk to
whoever administers that computer. If you don't know who that is,
see the next question for some possible ways to find out.
A.6.2 What commands can I type into my PuTTY terminal window?
Again, this is not a question you should be asking _us_. You need
to read the manuals, or ask the administrator, of _the computer you
have connected to_.
PuTTY does not process the commands you type into it. It's only a
communications tool. It makes a connection to another computer; it
passes the commands you type to that other computer; and it passes
the other computer's responses back to you. Therefore, the precise
range of commands you can use will not depend on PuTTY, but on what
kind of computer you have connected to and what software is running
on it. The PuTTY team cannot help you with that.
(Think of PuTTY
somebody up and
understand you,
out for you. We
making yourself
its MACs in the same incorrect manner as they do, so it will be able
to work with them.
If you are using PuTTY version 0.51 or below, you can enable the
workaround by going to the SSH panel and ticking the box labelled
`Imitate SSH2 MAC bug'. It's possible that you might have to do this
with 0.52 as well, if a buggy server exists that PuTTY doesn't know
about.
In this context MAC stands for Message Authentication Code. It's a
cryptographic term, and it has nothing at all to do with Ethernet
MAC (Media Access Control) addresses.
A.7.2 Why do I see `Fatal: Protocol error: Expected control record' in
PSCP?
This happens because PSCP was expecting to see data from the server
that was part of the PSCP protocol exchange, and instead it saw data
that it couldn't make any sense of at all.
This almost always happens because the startup scripts in your
account on the server machine are generating output. This is
impossible for PSCP, or any other SCP client, to work around. You
should never use startup files (`.bashrc', `.cshrc' and so on) which
generate output in non-interactive sessions.
This is not actually a PuTTY problem. If PSCP fails in this way,
then all other SCP clients are likely to fail in exactly the same
way. The problem is at the server end.
A.7.3 I clicked on a colour in the Colours panel, and the colour didn't
change in my terminal.
That isn't how you're supposed to use the Colours panel.
During the course of a session, PuTTY potentially uses _all_ the
colours listed in the Colours panel. It's not a question of using
only one of them and you choosing which one; PuTTY will use them
_all_. The purpose of the Colours panel is to let you adjust the
appearance of all the colours. So to change the colour of the
cursor, for example, you would select `Cursor Colour', press the
`Modify' button, and select a new colour from the dialog box that
appeared. Similarly, if you want your session to appear in green,
you should select `Default Foreground' and press `Modify'. Clicking
on `ANSI Green' won't turn your session green; it will only allow
you to adjust the _shade_ of green used when PuTTY is instructed by
the server to display green text.
A.7.4 Plink on Windows 95 says it can't find WS2_32.DLL.
Plink requires the extended Windows network library, WinSock version
2. This is installed as standard on Windows 98 and above, and on
Windows NT, and even on later versions of Windows 95; but early
Win95 installations don't have it.
In order to use Plink on these systems, you will need to download
the WinSock 2 upgrade:
http://www.microsoft.com/windows95/downloads/contents/
wuadmintools/s_wunetworkingtools/w95sockets2/
A.7.5 After trying to establish an SSH-2 connection, PuTTY says `Out of
memory' and dies.
If this happens just while the connection is starting up, this often
indicates that for some reason the client and server have failed to
establish a session encryption key. Somehow, they have performed
calculations that should have given each of them the same key, but
have ended up with different keys; so data encrypted by one and
decrypted by the other looks like random garbage.
This causes an `out of memory' error because the first encrypted
data PuTTY expects to see is the length of an SSH message. Normally
this will be something well under 100 bytes. If the decryption has
failed, PuTTY will see a completely random length in the region of
two _gigabytes_, and will try to allocate enough memory to store
this non-existent message. This will immediately lead to it thinking
it doesn't have enough memory, and panicking.
If this happens to you, it is quite likely to still be a PuTTY bug
and you should report it (although it might be a bug in your SSH
server instead); but it doesn't necessarily mean you've actually run
out of memory.
A.7.6 When attempting a file transfer, either PSCP or PSFTP says `Out of
memory' and dies.
This is almost always caused by your login scripts on the server
generating output. PSCP or PSFTP will receive that output when they
were expecting to see the start of a file transfer protocol, and
they will attempt to interpret the output as file-transfer protocol.
This will usually lead to an `out of memory' error for much the same
reasons as given in question A.7.5.
This is a setup problem in your account on your server, _not_ a
PSCP/PSFTP bug. Your login scripts should _never_ generate output
during non-interactive sessions; secure file transfer is not the
only form of remote access that will break if they do.
On Unix, a simple fix is to ensure that all the parts of your login
script that might generate output are in `.profile' (if you use a
Bourne shell derivative) or `.login' (if you use a C shell). Putting
them in more general files such as `.bashrc' or `.cshrc' is liable
to lead to problems.
A.7.7 PSFTP transfers files much slower than PSCP.
The throughput of PSFTP 0.54 should be much better than 0.53b and
prior; we've added code to the SFTP backend to queue several blocks
of data rather than waiting for an acknowledgement for each. (The
SCP backend did not suffer from this performance issue because SCP
is a much simpler protocol.)
A.7.8 When I run full-colour applications, I see areas of black space
change is
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\
MSTCP\MaxDataRetries
(it must be of type DWORD in Win95, or String in Win98/ME). (See MS
Knowledge Base article 158474 for more information.)
On Windows NT, 2000, or XP, the registry key to create or change is
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\
Parameters\TcpMaxDataRetransmissions
and it must be of type DWORD. (See MS Knowledge Base articles 120642
and 314053 for more information.)
Set the key's value to something like 10. This will cause Windows to
try harder to keep connections alive instead of abandoning them.
A.7.12 When I cat a binary file, I get `PuTTYPuTTYPuTTY' on my command
line.
Don't do that, then.
This is designed behaviour; when PuTTY receives the character
Control-E from the remote server, it interprets it as a request
to identify itself, and so it sends back the string `PuTTY' as if
that string had been entered at the keyboard. Control-E should only
be sent by programs that are prepared to deal with the response.
Writing a binary file to your terminal is likely to output many
Control-E characters, and cause this behaviour. Don't do it. It's a
bad plan.
To mitigate the effects, you could configure the answerback string
to be empty (see section 4.3.7); but writing binary files to your
terminal is likely to cause various other unpleasant behaviour, so
this is only a small remedy.
A.7.13 When I cat a binary file, my window title changes to a nonsense
string.
Don't do that, then.
It is designed behaviour that PuTTY should have the ability
to adjust the window title on instructions from the server.
Normally the control sequence that does this should only be sent
deliberately, by programs that know what they are doing and intend
to put meaningful text in the window title. Writing a binary file to
your terminal runs the risk of sending the same control sequence by
accident, and cause unexpected changes in the window title. Don't do
it.
A.7.14 My keyboard stops working once PuTTY displays the password prompt.
No, it doesn't. PuTTY just doesn't display the password you type, so
that someone looking at your screen can't see what it is.
Unlike the Windows login prompts, PuTTY doesn't display the password
as a row of asterisks either. This is so that someone looking at
your screen can't even tell how _long_ your password is, which might
be valuable information.
A.7.15 One or more function keys don't do what I expected in a server-side
application.
If you've already tried all the relevant options in the PuTTY
Keyboard panel, you may need to mail the PuTTY maintainers and ask.
It is _not_ usually helpful just to tell us which application,
which server operating system, and which key isn't working; in
order to replicate the problem we would need to have a copy of
every operating system, and every application, that anyone has ever
complained about.
PuTTY responds to function key presses by sending a sequence of
control characters to the server. If a function key isn't doing what
you expect, it's likely that the character sequence your application
is expecting to receive is not the same as the one PuTTY is sending.
Therefore what we really need to know is _what_ sequence the
application is expecting.
The simplest way to investigate this is to find some other terminal
environment, in which that function key _does_ work; and then
investigate what sequence the function key is sending in that
situation. One reasonably easy way to do this on a Unix system is
to type the command `cat', and then press the function key. This is
likely to produce output of the form `^[[11~'. You can also do this
in PuTTY, to find out what sequence the function key is producing in
that. Then you can mail the PuTTY maintainers and tell us `I wanted
the F1 key to send `^[[11~', but instead it's sending `^[OP', can
this be done?', or something similar.
You should still read the Feedback page on the PuTTY website (also
provided as appendix B in the manual), and follow the guidelines
contained in that.
A.7.16 Since my SSH server was upgraded to OpenSSH 3.1p1/3.4p1, I can no
longer connect with PuTTY.
There is a known problem when OpenSSH has been built against an
incorrect version of OpenSSL; the quick workaround is to configure
PuTTY to use SSH protocol 2 and the Blowfish cipher.
For more details and OpenSSH patches, see bug 138 in the OpenSSH
BTS.
This is not a PuTTY-specific problem; if you try to connect with
another client you'll likely have similar problems. (Although
PuTTY's default cipher differs from many other clients.)
_OpenSSH 3.1p1:_ configurations known to be broken (and symptoms):
-
the bit they were interested in. We have generally found this policy
to do the Right Thing in almost all situations.
Unfortunately, `screen' is one exception: it uses the alternate
screen, but it's still usually helpful to have PuTTY's scrollback
continue working. The simplest solution is to go to the Features
control panel and tick `Disable switching to alternate terminal
screen'. (See section 4.6.4 for more details.) Alternatively, you
can tell `screen' itself not to use the alternate screen: the
`screen' FAQ suggests adding the line `termcapinfo xterm ti@:te@' to
your .screenrc file.
The reason why this only started to be a problem in 0.54 is because
`screen' typically uses an unusual control sequence to switch to the
alternate screen, and previous versions of PuTTY did not support
this sequence.
A.7.20 Since I upgraded Windows XP to Service Pack 2, I can't use addresses
like 127.0.0.2.
Some people who ask PuTTY to listen on localhost addresses other
than 127.0.0.1 to forward services such as SMB and Windows Terminal
Services have found that doing so no longer works since they
upgraded to WinXP SP2.
This is apparently an issue with SP2 that is acknowledged by
Microsoft in MS Knowledge Base article 884020. The article links to
a fix you can download.
(_However_, we've been told that SP2 _also_ fixes the bug that means
you need to use non-127.0.0.1 addresses to forward Terminal Services
in the first place.)
A.7.21 PSFTP commands seem to be missing a directory separator (slash).
Some people have reported the following incorrect behaviour with
PSFTP:
psftp> pwd
Remote directory is /dir1/dir2
psftp> get filename.ext
/dir1/dir2filename.ext: no such file or directory
This is not a bug in PSFTP. There is a known bug in some versions of
portable OpenSSH (bug 697) that causes these symptoms; it appears
to have been introduced around 3.7.x. It manifests only on certain
platforms (AIX is what has been reported to us).
There is a patch for OpenSSH attached to that bug; it's also fixed
in recent versions of portable OpenSSH (from around 3.8).
A.7.22 Do you want to hear about `Software caused connection abort'?
In the documentation for PuTTY 0.53 and 0.53b, we mentioned that
we'd like to hear about any occurrences of this error. Since the
release of PuTTY 0.54, however, we've been convinced that this error
doesn't indicate that PuTTY's doing anything wrong, and we don't
need to hear about further occurrences. See section 10.14 for our
current documentation of this error.
A.7.23 My SSH-2 session locks up for a few seconds every so often.
Recent versions of PuTTY automatically initiate repeat key exchange
once per hour, to improve session security. If your client or server
machine is slow, you may experience this as a delay of anything up
to thirty seconds or so.
These delays are inconvenient, but they are there for your
protection. If they really cause you a problem, you can choose to
turn off periodic rekeying using the `Kex' configuration panel (see
section 4.19), but be aware that you will be sacrificing security
for this. (Falling back to SSH-1 would also remove the delays, but
would lose a _lot_ more security still. We do not recommend it.)
A.7.24 PuTTY fails to start up. Windows claims that `the application
configuration is incorrect'.
This is caused by a bug in certain versions of Windows XP which is
triggered by PuTTY 0.58. This was fixed in 0.59. The `xp-wont-run'
entry in PuTTY's wishlist has more details.
A.7.25 When I put PuTTY in C:\WINDOWS\SYSTEM32 on my 64-bit Windows system,
`Duplicate Session' doesn't work.
The short answer is not to put the PuTTY executables in that
location.
On 64-bit systems, C:\WINDOWS\SYSTEM32 is intended to
contain only 64-bit binaries; Windows' 32-bit binaries live
in C:\WINDOWS\SYSWOW64. When a 32-bit program such as PuTTY
runs on a 64-bit system, it cannot by default see the `real'
C:\WINDOWS\SYSTEM32 at all, because the File System Redirector
arranges that the running program sees the appropriate kind of
binaries in SYSTEM32. Thus, operations in the PuTTY suite that
involve it accessing its own executables, such as `New Session' and
`Duplicate Session', will not work.
A.8 Security questions
A.8.1 Is it safe for me to download PuTTY and use it on a public PC?
It depends on whether you trust that PC. If you don't trust the
public PC, don't use PuTTY on it, and don't use any other software
you plan to type passwords into either. It might be watching your
keystrokes, or it might tamper with the PuTTY binary you download.
There is _no_ program safe enough that you can run it on an actively
malicious PC and get away with typing passwords into it.
If you do trust the PC, then it's probably OK to use PuTTY on it
(but if you don't trust the network, then the PuTTY download might
be tampered with, so it would be better to carry PuTTY with you on a
USB stick).
A.8.2 What does PuTTY leave on a system? How can I clean up after it?
PuTTY will leave some Registry entries, and a random seed file, on
the PC (see question A.5.2). If you are using PuTTY on a public
PC, or somebody else's PC, you might want to clean these up when
you leave. You can do that automatically, by running the command
`putty -cleanup'. (Note that this only removes settings for the
currently logged-in user on multi-user systems.)
If PuTTY was installed from the installer package, it will also
appear in `Add/Remove Programs'. Older versions of the uninstaller
do not remove the above-mentioned registry entries and file.
A.8.3 How come PuTTY now supports DSA, when the website used to say how
insecure it was?
DSA has a major weakness _if badly implemented_: it relies on a
random number generator to far too great an extent. If the random
number generator produces a number an attacker can predict, the DSA
private key is exposed - meaning that the attacker can log in as you
on all systems that accept that key.
The PuTTY policy changed because the developers were informed of
ways to implement DSA which do not suffer nearly as badly from this
weakness, and indeed which don't need to rely on random numbers at
all. For this reason we now believe PuTTY's DSA implementation is
probably OK. However, if you have the choice, we still recommend you
use RSA instead.
A.8.4 Couldn't Pageant use VirtualLock() to stop private keys being
written to disk?
Unfortunately not. The VirtualLock() function in the
doesn't do a proper job: it may prevent small pieces
memory from being paged to disk while the process is
it doesn't stop the process's memory as a whole from
completely out to disk when the process is long-term
Pageant spends most of its time inactive.
Windows API
of a process's
running, but
being swapped
inactive. And
in PuTTY?
No!
A vendor of physical security products (e.g. locks) might plausibly
be willing to accept financial liability for a product that failed
to perform as advertised and resulted in damage (e.g. valuables
being stolen). The reason they can afford to do this is because they
sell a _lot_ of units, and only a small proportion of them will
fail; so they can meet their financial liability out of the income
from all the rest of their sales, and still have enough left over
to make a profit. Financial liability is intrinsically linked to
selling your product for money.
There are two reasons why PuTTY is not analogous to a physical
lock in this context. One is that software products don't exhibit
random variation: _if_ PuTTY has a security hole (which does happen,
although we do our utmost to prevent it and to respond quickly
when it does), every copy of PuTTY will have the same hole, so
it's likely to affect all the users at the same time. So even if
our users were all paying us to use PuTTY, we wouldn't be able to
_simultaneously_ pay every affected user compensation in excess of
the amount they had paid us in the first place. It just wouldn't
work.
The second, much more important, reason is that PuTTY users _don't_
pay us. The PuTTY team does not have an income; it's a volunteer
effort composed of people spending their spare time to try to write
useful software. We aren't even a company or any kind of legally
recognised organisation. We're just a bunch of people who happen to
do some stuff in our spare time.
Therefore, to ask us to assume financial liability is to ask us to
assume a risk of having to pay it out of our own _personal_ pockets:
out of the same budget from which we buy food and clothes and pay
our rent. That's more than we're willing to give. We're already
giving a lot of our spare _time_ to developing software for free; if
we had to pay our own _money_ to do it as well, we'd start to wonder
why we were bothering.
Free software fundamentally does not work on the basis of financial
guarantees. Your guarantee of the software functioning correctly is
simply that you have the source code and can check it before you
use it. If you want to be sure there aren't any security holes, do
a security audit of the PuTTY code, or hire a security engineer if
you don't have the necessary skills yourself: instead of trying to
ensure you can get compensation in the event of a disaster, try to
ensure there isn't a disaster in the first place.
If you _really_ want financial security, see if you can find a
security engineer who will take financial responsibility for the
correctness of their review. (This might be less likely to suffer
from the everything-failing-at-once problem mentioned above, because
such an engineer would probably be reviewing a lot of _different_
products which would tend to fail independently.) Failing that,
see if you can persuade an insurance company to insure you against
security incidents, and if the insurer demands it as a condition
Check the Change Log on the PuTTY website, and see if we have
already fixed the bug in the development snapshots.
If none of those options solved your problem, and you still need
to report a bug to us, it is useful if you include some general
information:
Tell us what kind of server you are connecting to; what OS, and
if possible what SSH server (if you're using SSH). You can get
some of this information from the PuTTY Event Log (see section
3.1.3.1 in the manual).
Send us the contents of the PuTTY Event Log, unless you have a
specific reason not to (for example, if it contains confidential
information that you think we should be able to solve your
problem without needing to know).
Don't just tell us that PuTTY `does the wrong thing'; tell us
exactly and precisely what it did, and also tell us exactly
and precisely what you think it should have done instead. Some
people tell us PuTTY does the wrong thing, and it turns out that
it was doing the right thing and their expectations were wrong.
Help to avoid this problem by telling us exactly what you think
it should have done, and exactly what it did do.
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html is an
article on how to report bugs effectively in general. If your
bug report is _particularly_ unclear, we may ask you to go away,
read this article, and then report the bug again.
you think the documentation could usefully have told you that, send
us a bug report and explain how you think we should change it.
B.3 Requesting extra features
If you want to request a new feature in PuTTY, the very first things
you should do are:
-
Check the Wishlist page on the PuTTY website, and see if your
feature is already on the list. If it is, it probably won't
achieve very much to repeat the request. (But see section B.4 if
you want to persuade us to give your particular feature higher
priority.)
Check the Wishlist and Change Log on the PuTTY website, and
see if we have already added your feature in the development
snapshots. If it isn't clear, download the latest development
snapshot and see if the feature is present. If it is, then it
will also be in the next release and there is no need to mail us
at all.
Mail us and vote for it. (Be sure to mention that you've seen
Offer to help us write the code. This is probably the _only_ way
to get a feature implemented quickly, if it's a big one that we
don't have time to do ourselves.
clear that we _could_ stop you doing this, even if we wanted to!)
B.8 Mirroring the PuTTY web site
If you want to set up a mirror of the PuTTY website, go ahead and
set one up. Please don't bother asking us for permission before
setting up a mirror. You already have permission.
If the mirror is in a country where we don't already have plenty
of mirrors, we may be willing to add it to the list on our mirrors
page. Read the guidelines on that page, make sure your mirror works,
and email us the information listed at the bottom of the page.
Note that we do not _promise_ to list your mirror: we get a lot of
mirror notifications and yours may not happen to find its way to the
top of the list.
Also note that we link to all our mirror sites using the
`rel="nofollow"' attribute. Running a PuTTY mirror is not intended
to be a cheap way to gain search rankings.
If you have technical questions about the process of mirroring, then
you might want to mail us before setting up the mirror (see also the
guidelines on the Mirrors page); but if you just want to ask for
permission, you don't need to. You already have permission.
B.9 Praise and compliments
One of the most rewarding things about maintaining free software
is getting e-mails that just say `thanks'. We are always happy to
receive e-mails of this type.
Regrettably we don't have time to answer them all in person. If you
mail us a compliment and don't receive a reply, _please_ don't think
we've ignored you. We did receive it and we were happy about it; we
just didn't have time to tell you so personally.
To everyone who's ever sent us praise and compliments, in the past
and the future: _you're welcome_!
B.10 E-mail address
The actual address to mail is <[email protected]>.
Appendix C: PuTTY Licence
------------------------PuTTY is copyright 1997-2015 Simon Tatham.
Portions copyright Robert de Bath, Joris van Rantwijk, Delian
Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry,
Justin Bradford, Ben Harris, Malcolm Smith, Ahmad Khalifa, Markus
Kuhn, Colin Watson, and CORE SDI S.A.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
(the `Software'), to deal in the Software without restriction,
Also, the front ends (in particular Windows Plink) can use multiple
threads if they like. However, Windows Plink keeps _very_ tight
control of its auxiliary threads, and uses them pretty much
exclusively as a form of select(). Pretty much all the code outside
windows/winplink.c is _only_ ever called from the one primary
thread; the others just loop round blocking on file handles and
send messages to the main thread when some real work needs doing.
This is not considered a portability hazard because that bit of
windows/winplink.c will need rewriting on other platforms in any
case.
One important consequence of this: PuTTY has only one thread in
which to do everything. That `everything' may include managing
more than one login session (section D.3), managing multiple data
channels within an SSH session, responding to GUI events even when
nothing is happening on the network, and responding to network
requests from the server (such as repeat key exchange) even when the
program is dealing with complex user interaction such as the reconfiguration dialog box. This means that _almost none_ of the PuTTY
code can safely block.
D.9 Keystrokes sent to the server wherever possible
In almost all cases, PuTTY sends keystrokes to the server. Even
weird keystrokes that you think should be hot keys controlling
PuTTY. Even Alt-F4 or Alt-Space, for example. If a keystroke has a
well-defined escape sequence that it could usefully be sending to
the server, then it should do so, or at the very least it should be
configurably able to do so.
To unconditionally turn a key combination into a hot key to control
PuTTY is almost always a design error. If a hot key is really truly
required, then try to find a key combination for it which _isn't_
already used in existing PuTTYs (either it sends nothing to the
server, or it sends the same thing as some other combination).
Even then, be prepared for the possibility that one day that key
combination might end up being needed to send something to the
server - so make sure that there's an alternative way to invoke
whatever PuTTY feature it controls.
D.10 640x480 friendliness in configuration panels
There's a reason we have lots of tiny configuration panels instead
of a few huge ones, and that reason is that not everyone has a
1600x1200 desktop. 640x480 is still a viable resolution for running
Windows (and indeed it's still the default if you start up in safe
mode), so it's still a resolution we care about.
Accordingly, the PuTTY configuration box, and the PuTTYgen control
window, are deliberately kept just small enough to fit comfortably
on a 640x480 display. If you're adding controls to either of these
boxes and you find yourself wanting to increase the size of the
whole box, _don't_. Split it into more panels instead.
D.11 Automatically generated Makefiles
been tampered with. Here we identify our public keys, and explain
our signature policy so you can have an accurate idea of what each
signature guarantees. This description is provided as both a web
page on the PuTTY site, and an appendix in the PuTTY manual.
As of release 0.58, all of the PuTTY executables contain fingerprint
material (usually accessed via the `-pgpfp' command-line option),
such that if you have an executable you trust, you can use it to
establish a trust path, for instance to a newer version downloaded
from the Internet.
(Note that none of the keys, signatures, etc mentioned here have
anything to do with keys used with SSH - they are purely for
verifying the origin of files distributed by the PuTTY team.)
E.1 Public keys
We supply two complete sets of keys. We supply a set of RSA keys,
compatible with both GnuPG and PGP2, and also a set of DSA keys
compatible with GnuPG.
In each format, we have three keys:
-
A Master Key. The Master Key is used to sign the other two keys,
and they sign it in return.
built, the binaries are uploaded to this Unix box and then signed
automatically.
Therefore, a signature from one of the Development Snapshots keys
_DOES_ protect you against:
-
People tampering with the PuTTY binaries between the PuTTY web
site and you.
[email protected]
[email protected]
[email protected]
These appeared in various drafts of what eventually became
RFC 4432. They have been superseded by rsa1024-sha1 and rsa2048sha256.
F.3 Encryption algorithm names
[email protected]
[email protected]
These were used in drafts of what eventually became RFC 4345.
They have been superseded by arcfour128 and arcfour256.
[PuTTY release 0.64]