PuTTY Change Log
Changes | Wishlist
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):
The moment you've all been waiting for: RSA public key
authentication is here! You can enter a public-key file name in the
SSH configuration panel, and PuTTY will attempt to authenticate with
that before falling back to passwords or TIS. Key file format is the
same as "regular" ssh. Decryption of the key using a passphrase is
supported. No key generation utility is provided, yet.
Created Plink, a command-line version of PuTTY suitable for use as a
component of a pipe assembly (for example, Windows NT CVS can use it
as a transport).
SSH protocol version 2 support. This is EXPERIMENTAL, and disabled
by default unless you connect to a v2-only server. Big things are
missing from it (Blowfish doesn't work yet, and public key
authentication isn't present), and other big things are
unimplemented (for example, there is no checking of remote window
size and no adjustment of local window size, so PuTTY might confuse
the server or suddenly stop receiving data. USE AT YOUR OWN
Enable handling of
telnet://hostname:port/ URLs on the
command line. With this feature, you can now set PuTTY as the
default handler for Telnet URLs. If you run the Registry Editor and
set the value in
HKEY_CLASSES_ROOT\telnet\shell\open\command to be
\path\to\putty.exe %1" (with the full pathname of your
PuTTY executable), you should find that clicking on telnet links in
your web browser now runs PuTTY.
Re-merge the two separate forks of the ssh protocol code. PuTTY and
PSCP now use the same protocol module, meaning that further SSH
developments will be easily able to affect both.
These features are new in beta 0.49 (released 2000-06-28):
Stop the SSH protocol code from sending zero-length
SSH_CMSG_STDIN_DATA packets when Shift is pressed. These appear to
be harmless to Unix sshd, but cause VMS sshd to generate an Exit
Fix a small bug about using special port numbers in pscp; thanks to
Joris van Rantwijk.
Three security improvements. PuTTY now checks the CRC on incoming
packets, checks that the packet length and string length fields on
SSH_SMSG_*_DATA packets are consistent, and
outlaws attempts to set the terminal size too big by escape
sequences (countering the xterm DoS attack shown in bugtraq #1298).
High-half characters (160 and above) are now supported in username
and password input.
Bug fix: RSA keys whose storage format used an odd number of bytes
(i.e. the bit length of the key, mod 16, was between 1 and 8
inclusive) were being handled incorrectly. An sshd with an 850-bit
server key wasn't able to accept connections from PuTTY as a result.
pscp now has the "
-ls" option to get a directory
listing of a remote host. It does this by sending the command
ls -la <dirspec>", so it might well not work
on non-Unix ssh servers. It's mainly there to allow a useful
directory listing facility for potential GUI front ends.
Local line discipline is now invoked in more sensible circumstances,
and understands Telnet Erase Line. Thanks to Robert de Bath.
Blinking cursor support (off by default). Thanks to Robert de Bath.
Hopefully vastly improved PuTTY's behaviour under load; also we can
process incoming data even during a window move/resize. Thanks to
Robert de Bath.
Better handling of the bug in which underlines are drawn outside the
character cell. Now they don't get drawn at _all_, which is still
non-ideal but it's better than rampaging screen corruption. Thanks
to Robert de Bath.
Various terminal emulation upgrades. Thanks to Robert de Bath.
By popular demand, Shift-Tab now sends ESC [ Z instead of being
indistinguishable from ordinary Tab.
^C, ^Z and ^D now instruct the local-terminal line discipline to
send Telnet special control codes. The local line discipline can
also be enabled and disabled in mid-session without dropping data,
and it's also linked to the Telnet ECHO option. Patch due to Robert
Telnet SYNCH is now preceded by IAC, which it wasn't previously.
Patch due to Robert de Bath.
Fixed the long-standing bug in which CSI ? Q and CSI Q were treated
identically for most values of Q. Patch due to Robert de Bath.
Pressing Return in a Telnet session now sends Telnet NL instead of
Telnet CR (in raw data, that's CR-LF not CR-NUL; ^J continues to
send just LF). Unix telnetds should not notice any difference;
others might suddenly start working. Patch due to Robert de Bath.
Much patchery in font selection code; with any luck, mixed OEM+ANSI
line drawing mode will now be more reliable. Patch due to Robert de
An attempt has been made to deal with the dropping of incoming data
between decoding and display.
Replaced all the algorithms that weren't already my own code. The
DES, MD5, SHA, and CRC32 implementations used in PuTTY are now all
written by me and distributable under the PuTTY licence, instead of
being borrowed from a variety of other places. Better still, there
are comments: the DES implementation contains a careful
description of how the algorithm given in the spec was transformed
into the optimised algorithm in the code, and the CRC32
implementation explains what a CRC is and how the table lookup
Scrollback behaviour has changed. ANSI Delete Line at the top of the
screen now inserts the lines into the scrollback (previously, only
genuine scroll-up would do this). However, the scrollback is never
touched by scroll operations in the alternate screen.
The response to Ctrl-E is now "PuTTY" instead of the xtermalike
sequence it was previously.
The command line option
-log will now cause all data
received from the remote host to be logged to a file
PSCP now doesn't try to "recurse" into the directories
.. like it did before.
Add keyboard accelerators on the System menu.
"Warn On Close" no longer applies to inactive windows: you can close
one of those without complaint.
There is now a system to generate Borland and Cygnus makefiles from
the master makefile, so that people can build PuTTY with other
compilers but I still only have to maintain one makefile.
These features are new in beta 0.48 (released 1999-11-18):
Cyrillic support: optional KOI8 to Win1251 translation, an internal
version of the Cyrillic key map for machines that don't have it
installed systemwide, and support for selecting a character set in
the font configuration. All thanks to Oleg Panashchenko.
Support for the TIS authentication option (to the client, this looks
much like a form of password authentication, so there's no local
SSH mode now shows an Event Log of all the initial protocol setup,
to match the Telnet negotiation log.
Alt-F4 as "close window" can be configured off. Alt-Space as System
menu is now an option and can be configured on, although it doesn't
work very well (you have to press Down after hitting Alt-Space).
NetHack keypad mode mapping (shift-with-)numeric-keypad to
(shift-with-)hjklyubn. Unfortunately Shift only works when NumLock
is off, which is a bit odd.
An implementation of the scp client, as a separate binary.
Many thanks to Joris van Rantwijk.
Change the default title bar format to "host.name - PuTTY" rather
than "PuTTY: host.name", so as to be more useful in the taskbar.
Warning box "are you sure you want to disconnect?" on hitting the
Close button or Alt-F4 or whatever.
Telnet mode was reported to drop char-255, presumably due to
mishandling IAC IAC. Fix due to Robert de Bath.
Add some keyboard accelerators in the configuration box.
A raw-TCP connection option, alongside Telnet and SSH. Thanks to
A local line-editing line discipline, which can be layered over any
of the back end connection options. Most usefully, this can be used
to make the raw-TCP back end suitable for talking to finger, SMTP,
POP, NNTP etc. servers.
A small tool-tip that shows the size of the terminal window in
character cells while it's being resized, so you can drag it out to
a precise size. Many thanks to John Sullivan, who achieved this
despite other people supporting my belief that it was impossible.
Single DES as an SSH encryption option, as well as triple DES.
Thanks to Murphy Lam.
Support for using ssh by default: a
-ssh command line
option, a compile-time definition
SSH_DEFAULT, and the
ability to honour port and protocol (and host!) settings in the
"Default Settings" part of the registry if they've been manually
Made stored sessions available as a submenu from the system menu.
Thanks to Owen Dunn.
Minimal Win32s compatibility, as a compile-time option (so
it's not in the snapshot binaries but is in the snapshot source
releases). The configuration box apparently doesn't work, but the
actual sessions will run OK. Thanks to Owen Dunn.
This feature is new in beta 0.47 (released 1999-08-27):
Fixed a potential security flaw in the random number generator.
These features were new in beta 0.46 (released 1999-07-09):
- 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 <email@example.com> for inventing a way to achieve
Resource/memory leaks are apparently fixed. I'm going to assume they
are completely fixed, unless someone mails me to suggest
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 (released 1999-01-22):
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