PuTTY: A Free Win32 Telnet/SSH Client
PuTTY (originally STel until it stopped being just Telnet) is a
free implementation of Telnet and SSH for Win32 platforms (Win95 and
WinNT have been tested; Win98 is reported to work fine).
The latest version is beta 0.47.
There is no documentation as yet, but I'll include here an answer
to the most common question people ask me.
Question: Can I start an SSH session directly from the
command line, without having to go through the config box?
Answer: Yes, if you've saved the details of the session:
if PuTTY's command line starts with an @ sign, the rest of the line
is interpreted as the name of a saved session. So putty
@mysession
will do it.
LEGAL WARNING: Use of PuTTY is illegal in countries where
encryption is outlawed (I understand France is one such country).
PuTTY also employs RSA public-key encryption without the use of the
RSAREF library (since it was developed outside the USA) and so my
understanding of USA patent regulations is that use of it within the
USA may infringe software patents. I believe it is legal to use it
in England and many other countries, but I am not a lawyer and so if
in doubt you should seek legal advice before downloading it. I may
make a telnet-only (encryption-free) variant available for download
if interest is expressed.
Here are the PuTTY files themselves:
The latest release version. This will generally be
a version I think is reasonably likely to work well. If you have a
problem with the release version, it might be worth trying out the
latest development snapshot (below) to see if I've already fixed the
bug, before reporting it to me.
PuTTY.EXE,
the latest release executable for Intel x86.
(Download by HTTP if that link doesn't work
for you.)
PuTTY-alpha.EXE,
the latest release executable for Windows NT Alpha.
(Download by HTTP if that link doesn't work
for you.)
PuTTY.ZIP,
the source code from the latest release.
The latest development snapshot. This will be built every
day, automatically, from the current development code - in
whatever state it's currently in. If you need a fix for a
particularly crippling bug, you may well be able to find a fixed
PuTTY here well before the fix makes it into the release version
above. On the other hand, anything you download from here might
randomly fail to work (at best!), and I'm not guaranteed to pay much
attention if you report bugs in the snapshots that you haven't
already tried to reproduce in the latest release.
PuTTY-x86.EXE,
the latest development snapshot for Intel x86.
PuTTY-alpha.EXE,
the latest development snapshot for Windows NT Alpha.
PuTTY-src.ZIP,
the latest development snapshot source code.
These features are planned for the next release (and should
therefore be available in the development snapshots, unless they're
not updating, which happens sometimes):
-
Change the default title bar format to "host.name - PuTTY" rather
than "PuTTY: host.name", so as to be more useful in the taskbar.
-
Add some keyboard accelerators in the configuration box.
This feature is new in beta 0.47:
-
Fixed a potential security flaw in the random number generator.
These features were new in beta 0.46:
- Fixed a bug causing hangs when an SSH window was resized after
the connection was closed. I'd never spotted it, because I never use
Close Window On Exit...
- Default mouse pointer inside the PuTTY window is now an I-beam.
- Support for AltGr. As it turns out, it is possible to do
this without also changing the behaviour of Ctrl/LeftAlt. Many
thanks to <andre@via.ecp.fr> for inventing a way to achieve
this.
-
Resource/memory leaks are apparently fixed. I'm going to assume they
are completely fixed, unless someone mails me to suggest
otherwise.
-
Fixed the bug in the configuration box whereby double-clicking on a
saved session leaked the double click through to the window below.
-
ESC[?9r was being interpreted just like ESC[9r, with disastrous
results (the former turns off mouse click reporting, which PuTTY
doesn't support yet anyway; the latter munges the scroll region
horribly). Fixed, in a temporary sort of way.
-
Added Blowfish encryption as an alternative to triple-DES.
These features were new in beta 0.45:
-
Fix the GPF on maximise-then-restore.
-
Fix the delayed update of the window title when in
always-use-window-title mode and iconic.
-
Employ SetCapture() to allow drag-selects to continue to work when
the pointer drifts out of the window.
-
Some platforms apparently define the identifier "environ" as a
macro; stop using it inside PuTTY.
-
Add an option to ask SSH not to allocate a pty.
-
Add a terminal setting to cause LF to imply CR (useful with the
above).
This is the current bug/wish list:
-
Need to be able to use the keyboard to get focus into the saved
sessions list.
-
Many ESC[?nn;nn;nnQ type sequences (for various values of Q) are
interpreted as if the ? was absent. This is badly wrong and
occasionally disastrous, and should be tidied up in general.
-
Potentially the ability to select the default protocol in Default
Settings. Not sure.
-
Make the scroll bar optional; since Shift-PgUp and Shift-PgDn allow
scrollback without needing the actual bar, some people would like to
get rid of it and save screen space.
-
Possibly the mouse pointer should disappear when the PuTTY window is
active and text is typed, and reappear when the mouse is moved,
à la MS Word. Would be particularly useful for those of us
using focus-follows-mouse, where the pointer's quite likely to be
inside the window and obscuring the view.
-
Apparently when the About box is launched from the config box and
then closed, focus fails to return to the config box. I use
focus-follows-mouse so I never notice :-)
-
Underlines are sometimes drawn outside the character cell,
causing faulty screen updates. This can be worked around by changing
the font, since the underline location is font-specific. Smaller
sizes of Courier New are believed to exhibit this problem (9-point,
ie 12-pixel, certainly does for me).
-
Command line options, in general.
-
A command line option for ssh. Possibly "putty -ssh host.name".
Possibly just "putty -ssh" should bring up the config box with ssh
selected by default.
-
Deal with issues about Cyrillic support.
-
Work out how to deal with ALT+numberpad input of arbitrary character
codes.
-
Sometimes, selecting certain bitmap fonts with no explicit height
causes the wrong font to be selected. First find a machine to
reproduce the problem on *sigh*
-
Allow saving of the current screen+scrollback state to a file.
-
Fix processor hogging: when about to process one network-event
windows message, start by peeking and removing all the others of the
same message type. See if that cures the problem. But first, again,
reproduce it...
-
Apparently when scrollback resets due to new output arriving, the
scroll bar isn't updated correspondingly.
-
Apparently when telnetting to a FreeBSD box and hitting Ctrl/C at
the shell prompt, the next shell prompt appears indented, as if the
CR has been dropped from the inbound CRLF. Likely a SYNCH/Urgent
difficulty, and likely very hard to fix.
-
Stop the saved-configuration-name box getting blanked when you swap
away from and back to the Connection panel.
-
Possibly copy/paste should be implicit in the mouse only within
one window. Not convinced.
-
Implement a selection option to paste line drawing as the underlying
characters or as poor-man's.
-
WM_PASTE and drag&drop support.
-
NetHack mode, whereby numeric keypad generates nethack direction
keys, thus avoiding having to use number_pad option and also making
shift-directions behave sanely.
-
Remapping of keypad-Delete to ^? as an option. Also, optional
remapping of Home/End to ^A/^E, and optional NetHack mode mapping
(shift-with-)numeric-keypad to (shift-with-)hjklyubn. Maybe a
generic key remapping facility, though that would probably be
horrible to implement...
-
Make stored sessions available as a submenu from the system menu.
-
Make selection colours configurable rather than forcing them to be
inverse-of-current. But still need inverse-of-current as an option.
Come up with a sane UI for this and then implement it.
-
Have a blinking-cursor option for visually impaired people
(apparently helper software tends to track the cursor by watching it
blink).
-
Fix the double-clicking in the sessions box - shouldn't go off
WM_LBUTTONDBLCLK but should wait for subsequent WM_LBUTTONUP.
-
xterm mouse click reporting.
-
ANSI printer control support.
-
Make resetting of scrollback optional.
-
Maybe an interior border of a pixel or two. Configurable, of course.
-
Telnet mode is reported to drop char-255, presumably due to
mishandling IAC IAC.
-
Think about pre-building a bitmap for better scrolling, or possibly
just doing the old scroll optimisations over again and getting them
right.
-
Port to other OSes: Unix/X (need a local-xterm back end), BeOS
(likewise).
-
Toolbar, maybe. Certainly optional, if so.
-
Possibly more encryptions? Single-DES would be easy to add if not
particularly useful; IDEA is out due to the patent restrictions
being incompatible with the PuTTY licence; RC4 would probably be
doable if anyone actually wants it.
-
Port forwarding is something I'm not utterly opposed to seeing
implemented, but I probably won't do myself. Anyone is welcome to
send me an implementation :-)
-
An implementation of the scp client, as a separate binary.
-
Writing of decent (or any) documentation. Any documentation I
distribute with the "official" PuTTY releases will be written using
Buttress,
my own documentation system which I'm currently in the process of
writing.
-
Keep-alives to prevent overzealous idle detectors in firewalls from
closing connections down. Probably done by sending Telnet NOP or
some equally ineffectual SSH protocol packet, so as to avoid
affecting the actual data stream.
-
It would be nice for a little box to show the dimensions of the
PuTTY window while it was being resized (like fvwm et al. do under
X). This is probably at best Very Hard, and at worst impossible,
under Windows, but WM_SIZING might just make it possible. If anyone
knows how to do this, do feel free to tell me how (or even do
it!)...
-
Implementation of hooks that allow PuTTY to be linked against RSAREF
and use it for all its RSA operations; this will allow legal use of
PuTTY in the USA, if it can be done without infringing some other
irritating regulation, which I have my doubts about. Still, if
possible, it would be good. Requires help from someone inside the
USA and with a good understanding of the legal issues relating to
RSAREF and cryptographic APIs, which I qualify for neither of.
-
SSH compression.
In addition to this, there's a non-wish list, for things
that I don't intend to implement, just so that people will stop
asking me about them. If anyone else implements them for me,
they'll probably get added, but I doubt I'll be doing them myself.
-
Forms of SSH authentication other than password. I don't believe
many of these can be made sensibly secure from a Windows box, even
NT, and the ones that can tend to require the client to perform RSA
private-key operations, which my current RSA code is too slow to do
usefully. Plus they involve more typing than a password.
-
SSH X forwarding. The X authentication munging is just too vile.
-
SSH 2 support. The licencing on SSH2 means that I don't tend to know
people who run SSH2 servers, so it would be difficult for me to give
it proper testing. Someone else is welcome to do it for me, though.
Comments to anakin@pobox.com