Implemented export of OpenSSH keys.
[u/mdw/putty] / doc / faq.but
index 8acd636..e4eadb8 100644 (file)
@@ -1,3 +1,5 @@
+\versionid $Id: faq.but,v 1.27 2002/05/14 18:11:15 simon Exp $
+
 \A{faq} PuTTY FAQ
 
 This FAQ is published on the PuTTY web site, and also provided as an
@@ -22,63 +24,58 @@ development snapshots, in which case testing will be very welcome.
 page}, and see if you can find the feature there. If it's on there,
 it probably \e{hasn't} been implemented.
 
-\S{faq-ssh2} Does PuTTY support SSH v2?
+\S{faq-ssh2}{Question} Does PuTTY support SSH v2?
 
 Yes. SSH v2 support has been available in PuTTY since version 0.50.
 However, currently the \e{default} SSH protocol is v1; to select SSH
 v2 if your server supports both, go to the SSH panel and change the
 \e{Preferred SSH protocol version} option.
 
-Public key authentication (both RSA and DSA) in SSH v2 has been
-added since version 0.51.
+Public key authentication (both RSA and DSA) in SSH v2 is new in
+version 0.52.
 
-\S{faq-ssh2-keyfmt} Does PuTTY support reading OpenSSH or
+\S{faq-ssh2-keyfmt}{Question} Does PuTTY support reading OpenSSH or
 \cw{ssh.com} SSHv2 private key files?
 
-Not at present. OpenSSH and \cw{ssh.com} have totally different
-formats for private key files, and neither one is particularly
-pleasant, so PuTTY has its own. We do plan to write a converter at
-some stage.
+Version 0.52 doesn't, but in the latest development snapshots
+PuTTYgen can load OpenSSH and \cw{ssh.com} private keys, and save
+OpenSSH private keys. We plan to add exporting of \cw{ssh.com} keys
+as well.
 
-\S{faq-ssh1} Does PuTTY support SSH v1?
+\S{faq-ssh1}{Question} Does PuTTY support SSH v1?
 
 Yes. SSH 1 support has always been available in PuTTY.
 
-\S{faq-localecho} Does PuTTY support local echo?
+\S{faq-localecho}{Question} Does PuTTY support local echo?
 
-Yes.
+Yes. Version 0.52 has proper support for local echo.
 
-In version 0.51 and before, local echo cannot be separated from
+In version 0.51 and before, local echo could not be separated from
 local line editing (where you type a line of text locally, and it is
 not sent to the server until you press Return, so you have the
 chance to edit it and correct mistakes \e{before} the server sees
-it). The two features can be enabled and disabled from the Terminal
-panel, using the checkbox marked \q{Use local terminal line
-discipline}. Note that due to a bug in those versions of PuTTY,
-changing this feature in mid-session will have no effect; you have
-to enable it \e{before} you open the connection.
-
-In later versions, local echo and local line editing are separate
-options, and by default PuTTY will try to determine automatically
-whether to enable them or not, based on which protocol you have
-selected and also based on hints from the server. If you have a
-problem with PuTTY's default choice, you can force each option to be
-enabled or disabled as you choose. The controls are in the Terminal
-panel, in the section marked \q{Line discipline options}.
-
-\S{faq-disksettings} Does PuTTY support storing its settings in a
-disk file?
+it). New in version 0.52, local echo and local line editing are
+separate options, and by default PuTTY will try to determine
+automatically whether to enable them or not, based on which protocol
+you have selected and also based on hints from the server. If you
+have a problem with PuTTY's default choice, you can force each
+option to be enabled or disabled as you choose. The controls are in
+the Terminal panel, in the section marked \q{Line discipline
+options}.
+
+\S{faq-disksettings}{Question} Does PuTTY support storing its
+settings in a disk file?
 
 Not at present, although \k{config-file} in the documentation gives
 a method of achieving the same effect.
 
-\S{faq-fullscreen} Does PuTTY support full-screen mode, like a DOS
-box?
+\S{faq-fullscreen}{Question} Does PuTTY support full-screen mode,
+like a DOS box?
 
-Not in the 0.51 release, but it has been added since then.
+Yes; this is a new feature in version 0.52.
 
-\S{faq-password} Does PuTTY have the ability to remember my password
-so I don't have to type it every time?
+\S{faq-password-remember}{Question} Does PuTTY have the ability to
+remember my password so I don't have to type it every time?
 
 No, it doesn't.
 
@@ -101,8 +98,43 @@ authentication, which is more flexible and more secure. See
 \k{pubkey} in the documentation for a full discussion of public key
 authentication.
 
-\S{faq-server} Will you write an SSH server for the PuTTY suite, to
-go with the client?
+\S{faq-hostkeys}{Question} 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 \e{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 \e{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 \e{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 \e{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. That way, you retain the \e{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.
+
+\S{faq-server}{Question} 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
 re-use existing code and significantly cut down the effort. We don't
@@ -116,6 +148,18 @@ it would be for us to write a server from the ground up. We don't
 have time, and we don't have motivation. The code is available if
 anyone else wants to try it.
 
+\S{faq-pscp-ascii}{Question} Can PSCP or PSFTP transfer files in
+ASCII mode?
+
+Unfortunately not. This is a limitation of the file transfer
+protocols: the SCP and SFTP protocols have no notion of transferring
+a file in anything other than binary mode.
+
+SFTP is designed to be extensible, so it's possible that an
+extension might be proposed at some later date that implements ASCII
+transfer. But the PuTTY team can't do anything about it until that
+happens.
+
 \H{faq-ports} Ports to other operating systems
 
 The eventual goal is for PuTTY to be a multi-platform program, able
@@ -136,7 +180,21 @@ under X11 or perhaps other windowing systems, whereas Telnet Passive
 Mode is universal and shouldn't need to be specified once for each
 platform.
 
-\S{faq-wince} Will there be a port to Windows CE?
+\S{faq-ports-general}{Question} What ports of PuTTY exist?
+
+Currently, PuTTY only runs on full Win32 systems. This includes
+Windows 95, 98, and ME, and it includes Windows NT, Windows 2000 and
+Windows XP.
+
+It does \e{not} include Windows CE (see \k{faq-wince}), and it does
+not quite include the Win32s environment under Windows 3.1 (see
+\k{faq-win31}).
+
+We do not have ports for any other systems at the present time. If
+anyone told you we had a Unix port, or an iPaq port, or any other
+port of PuTTY, they were mistaken. We don't.
+
+\S{faq-wince}{Question} Will there be a port to Windows CE?
 
 Probably not in the particularly near future. Despite sharing large
 parts of the Windows API, in practice WinCE doesn't appear to be
@@ -146,14 +204,31 @@ system.
 However, PuTTY on portable devices would clearly be a useful thing,
 so in the long term I hope there will be a WinCE port.
 
-\S{faq-mac} Will there be a port to the Mac?
+\S{faq-win31}{Question} Is there a port to Windows 3.1?
+
+PuTTY is a 32-bit application from the ground up, so it won't run on
+Windows 3.1 as a native 16-bit program; and it would be \e{very}
+hard to port it to do so, because of Windows 3.1's vile memory
+allocation mechanisms.
+
+However, it is possible in theory to compile the existing PuTTY
+source in such a way that it will run under Win32s (an extension to
+Windows 3.1 to let you run 32-bit programs). In order to do this
+you'll need the right kind of C compiler - modern versions of Visual
+C at least have stopped being backwards compatible to Win32s. Also,
+the last time we tried this it didn't work very well.
+
+If you're interested in running PuTTY under Windows 3.1, help and
+testing in this area would be very welcome!
+
+\S{faq-mac-port}{Question} Will there be a port to the Mac?
 
 A Mac port was started once and is half-finished, but development
 has been static for some time and the main PuTTY code has moved on,
 so it's not clear how quickly development would resume even if
 developer effort were available.
 
-\S{faq-unix} Will there be a port to Unix?
+\S{faq-unix}{Question} Will there be a port to Unix?
 
 I hope so, if only so that I can have an \cw{xterm}-like program
 that supports exactly the same terminal emulation as PuTTY. If and
@@ -161,7 +236,7 @@ when we do do a Unix port, it will have a local-terminal back end so
 it can be used like an \cw{xterm}, rather than only being usable as
 a network utility.
 
-\S{faq-epoc} Will there be a port to EPOC?
+\S{faq-epoc}{Question} Will there be a port to EPOC?
 
 I hope so, but given that ports aren't really progressing very fast
 even on systems the developers \e{do} already know how to program
@@ -170,7 +245,7 @@ a new system and doing the port for that.
 
 \H{faq-embedding} Embedding PuTTY in other programs
 
-\S{faq-dll} Is the SSH or Telnet code available as a DLL?
+\S{faq-dll}{Question} Is the SSH or Telnet code available as a DLL?
 
 No, it isn't. It would take a reasonable amount of rewriting for
 this to be possible, and since the PuTTY project itself doesn't
@@ -180,8 +255,8 @@ has taken the time to do it.
 Most of the code cleanup work would be a good thing to happen in
 general, so if anyone feels like helping, we wouldn't say no.
 
-\S{faq-vb} Is the SSH or Telnet code available as a Visual Basic
-component?
+\S{faq-vb}{Question} Is the SSH or Telnet code available as a Visual
+Basic component?
 
 No, it isn't. None of the PuTTY team uses Visual Basic, and none of
 us has any particular need to make SSH connections from a Visual
@@ -193,8 +268,8 @@ If someone offers to do some of this work for us, we might consider
 it, but unless that happens I can't see VB integration being
 anywhere other than the very bottom of our priority list.
 
-\S{faq-ipc} How can I use PuTTY to make an SSH connection from
-within another program?
+\S{faq-ipc}{Question} How can I use PuTTY to make an SSH connection
+from within another program?
 
 Probably your best bet is to use Plink, the command-line connection
 tool. If you can start Plink as a second Windows process, and
@@ -206,12 +281,10 @@ This is what CVS for Windows does, for example.
 
 \H{faq-details} Details of PuTTY's operation
 
-\S{faq-term} What terminal type does PuTTY use?
+\S{faq-term}{Question} What terminal type does PuTTY use?
 
 For most purposes, PuTTY can be considered to be an \cw{xterm}
-terminal, although full support for some of \cw{xterm}'s features,
-such as passing mouse actions to the server-side program, is not
-present in the 0.51 release (but has been added since).
+terminal.
 
 PuTTY also supports some terminal control sequences not supported by
 the real \cw{xterm}: notably the Linux console sequences that
@@ -223,7 +296,7 @@ By default, PuTTY announces its terminal type to the server as
 \c{xterm}. If you have a problem with this, you can reconfigure it
 to say something else; \c{vt220} might help if you have trouble.
 
-\S{faq-settings} Where does PuTTY store its data?
+\S{faq-settings}{Question} Where does PuTTY store its data?
 
 PuTTY stores most of its data (saved sessions, SSH host keys) in the
 Registry. The precise location is
@@ -246,13 +319,13 @@ pathname in the Registry, at
 
 \H{faq-howto} HOWTO questions
 
-\S{faq-startmax} How can I make PuTTY start up maximised?
+\S{faq-startmax}{Question} How can I make PuTTY start up maximised?
 
 Create a Windows shortcut to start PuTTY from, and set it as \q{Run
 Maximized}.
 
-\S{faq-startsess} How can I create a Windows shortcut to start a
-particular saved session directly?
+\S{faq-startsess}{Question} How can I create a Windows shortcut to
+start a particular saved session directly?
 
 To run a PuTTY session saved under the name \q{\cw{mysession}},
 create a Windows shortcut that invokes PuTTY with a command line
@@ -260,15 +333,15 @@ like
 
 \c \path\name\to\putty.exe @mysession
 
-\S{faq-startssh} How can I start an SSH session straight from the
-command line?
+\S{faq-startssh}{Question} How can I start an SSH session straight
+from the command line?
 
 Use the command line \c{putty -ssh host.name}. Alternatively, create
 a saved session that specifies the SSH protocol, and start the saved
 session as shown in \k{faq-startsess}.
 
-\S{faq-cutpaste} How do I copy and paste between PuTTY and other
-Windows applications?
+\S{faq-cutpaste}{Question} How do I copy and paste between PuTTY and
+other Windows applications?
 
 Copy and paste works similarly to the X Window System. You use the
 left mouse button to select text in the PuTTY window. The act of
@@ -287,15 +360,13 @@ Windows users don't have a middle button at all.
 
 You can also paste by pressing Shift-Ins.
 
-\S{faq-tunnels} How do I use X forwarding and port forwarding? I
-can't find the Tunnels panel.
+\S{faq-tunnels}{Question} How do I use X forwarding and port
+forwarding? I can't find the Tunnels panel.
 
-If you're looking in the 0.51 release or earlier, the Tunnels panel
-isn't there. It was added in the development snapshots after 0.51,
-and releases 0.52 and onwards will contain it.
+This is a new feature in version 0.52. You should upgrade.
 
-\S{faq-options} How do I use all PuTTY's features (public keys, port
-forwarding, SSH v2, etc.) in PSCP, PSFTP and Plink?
+\S{faq-options}{Question} How do I use all PuTTY's features (public
+keys, port forwarding, SSH v2, etc.) in PSCP, PSFTP and Plink?
 
 The command-line tools are currently rather short of command line
 options to enable this sort of thing. However, you can use most of
@@ -304,8 +375,8 @@ the name of the saved session on the command line in place of a
 hostname. This works for PSCP, PSFTP and Plink (but don't expect
 port forwarding in the file transfer applications!).
 
-\S{faq-pscp} How do I use PSCP.EXE? When I double-click it gives me
-a command prompt window which then closes instantly.
+\S{faq-pscp}{Question} How do I use PSCP.EXE? When I double-click it
+gives me a command prompt window which then closes instantly.
 
 PSCP is a command-line application, not a GUI application. If you
 run it without arguments, it will simply print a help message and
@@ -314,8 +385,8 @@ terminate.
 To use PSCP properly, run it from a Command Prompt window. See
 \k{pscp} in the documentation for more details.
 
-\S{faq-pscp-spaces} How do I use PSCP to copy a file whose name has
-spaces in?
+\S{faq-pscp-spaces}{Question} How do I use PSCP to copy a file whose
+name has spaces in?
 
 If PSCP is using the traditional SCP protocol, this is confusing. If
 you're specifying a file at the local end, you just use one set of
@@ -352,7 +423,8 @@ of quotes in the obvious way:
 
 \H{faq-trouble} Troubleshooting
 
-\S{faq-mac} Why do I see \q{Incorrect MAC received on packet}?
+\S{faq-incorrect-mac}{Question} Why do I see \q{Incorrect MAC
+received on packet}?
 
 This is due to a bug in old SSH 2 servers distributed by
 \cw{ssh.com}. Version 2.3.0 and below of their SSH 2 server
@@ -361,23 +433,41 @@ expects the client to construct them in the same wrong way. PuTTY
 constructs the MACs correctly by default, and hence these old
 servers will fail to work with it.
 
-If you are using PuTTY version 0.51 or below, go to the SSH panel
-and check the box labelled \q{Imitate SSH 2 MAC bug}. This will
-cause PuTTY to construct its MACs in the same incorrect manner as
-the buggy servers, so it will be able to work with them.
+If you are using PuTTY version 0.52 or better, this should work
+automatically: PuTTY should detect the buggy servers from their
+version number announcement, and automatically start to construct
+its MACs in the same incorrect manner as they do, so it will be able
+to work with them.
 
-Since version 0.51, PuTTY has been enhanced to detect buggy servers
-automatically (when they announce their version) and enable the
-workaround without the user needing to ask. Therefore you \e{should}
-never have to use this option again after 0.52, but it is still
-provided just in case another buggy server shows up.
+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
+\q{Imitate SSH 2 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.
 
-\S{faq-colours} I clicked on a colour in the Colours panel, and the
-colour didn't change in my terminal.
+\S{faq-pscp-protocol}{Question} Why do I see \q{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 (\c{.bashrc}, \c{.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.
+
+\S{faq-colours}{Question} 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.
 
@@ -394,7 +484,8 @@ Clicking on \q{ANSI Green} won't turn your session green; it will
 only allow you to adjust the \e{shade} of green used when PuTTY is
 instructed by the server to display green text.
 
-\S{faq-winsock2} Plink on Windows 95 says it can't find \cw{WS2_32.DLL}.
+\S{faq-winsock2}{Question} Plink on Windows 95 says it can't find
+\cw{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
@@ -408,19 +499,18 @@ the
 \c http://www.microsoft.com/windows95/downloads/contents/wuadmintools/
 \c   s_wunetworkingtools/w95sockets2/
 
-\S{faq-rekey} My PuTTY sessions close after an hour and tell me
-\q{Server failed host key check}.
+\S{faq-rekey}{Question} My PuTTY sessions close after an hour and
+tell me \q{Server failed host key check}.
 
 This is a bug in all versions of PuTTY up to and including 0.51. SSH
 v2 servers from \cw{ssh.com} will require the key exchange to be
 repeated one hour after the start of the connection, and PuTTY will
 get this wrong.
 
-The bug has been fixed since version 0.51, so upgrading to a later
-version or snapshot should solve the problem.
+Upgrade to version 0.52 and the problem should go away.
 
-\S{faq-outofmem} After trying to establish an SSH 2 connection,
-PuTTY says \q{Out of memory} and dies.
+\S{faq-outofmem}{Question} After trying to establish an SSH 2
+connection, PuTTY says \q{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
@@ -442,13 +532,66 @@ 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.
 
-\S{faq-altgr} I can't type characters that require the AltGr key.
+\S{faq-outofmem2}{Question} When attempting a file transfer, either
+PSCP or PSFTP says \q{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 \q{out of memory} error for much the
+same reasons as given in \k{faq-outofmem}.
+
+This is a setup problem in your account on your server, \e{not} a
+PSCP/PSFTP bug. Your login scripts should \e{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 \c{.profile} (if you use a
+Bourne shell derivative) or \c{.login} (if you use a C shell).
+Putting them in more general files such as \c{.bashrc} or \c{.cshrc}
+is liable to lead to problems.
+
+\S{faq-psftp-slow} PSFTP transfers files much slower than PSCP.
+
+We believe this is because the SFTP and SSH2 protocols are less
+efficient at bulk data transfer than SCP and SSH1, because every
+block of data transferred requires an acknowledgment from the far
+end. It would in theory be possible to queue several blocks of data
+to get round this speed problem, but as yet we haven't done the
+coding. If you really want this fixed, feel free to offer to help.
+
+\S{faq-bce}{Question} When I run full-colour applications, I see
+areas of black space where colour ought to be.
+
+You almost certainly need to enable the \q{Use background colour to
+erase screen} setting in the Terminal panel. Note that if you do
+this in mid-session, it won't take effect until you reset the
+terminal (see \k{faq-resetterm}).
 
-In PuTTY version 0.51, the AltGr key was broken. The bug has been
-fixed since then.
+\S{faq-resetterm}{Question} When I change some terminal settings,
+nothing happens.
 
-\S{faq-idleout} My PuTTY sessions unexpectedly close after they
-are idle for a while.
+Some of the terminal options (notably Auto Wrap and
+background-colour screen erase) actually represent the \e{default}
+setting, rather than the currently active setting. The server can
+send sequences that modify these options in mid-session, but when
+the terminal is reset (by server action, or by you choosing \q{Reset
+Terminal} from the System menu) the defaults are restored.
+
+If you want to change one of these options in the middle of a
+session, you will find that the change does not immediately take
+effect. It will only take effect once you reset the terminal.
+
+\S{faq-altgr}{Question} I can't type characters that require the
+AltGr key.
+
+In PuTTY version 0.51, the AltGr key was broken. Upgrade to version
+0.52.
+
+\S{faq-idleout}{Question} My PuTTY sessions unexpectedly close after
+they are idle for a while.
 
 Some types of firewall, and almost any router doing Network Address
 Translation (NAT, also known as IP masquerading), will forget about
@@ -467,8 +610,8 @@ cause a \e{loss} of robustness against network dropouts. See
 \k{config-keepalive} in the documentation for more discussion of
 this.
 
-\S{faq-timeout} PuTTY's network connections time out too quickly
-when network connectivity is temporarily lost.
+\S{faq-timeout}{Question} PuTTY's network connections time out too
+quickly when network connectivity is temporarily lost.
 
 This is a Windows problem, not a PuTTY problem. The timeout value
 can't be set on per application or per session basis. To increase
@@ -491,10 +634,10 @@ and it must be of type DWORD.
 Set the key's value to something like 10. This will cause Windows to
 try harder to keep connections alive instead of abandoning them.
 
-\S{faq-puttyputty} When I \cw{cat} a binary file, I get
+\S{faq-puttyputty}{Question} When I \cw{cat} a binary file, I get
 `PuTTYPuTTYPuTTY' on my command line.
 
-Don't \cw{cat} binary files, then.
+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
@@ -505,10 +648,15 @@ 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.
 
-\S{faq-puttyputty} When I \cw{cat} a binary file, my window title
-changes to a nonsense string.
+To mitigate the effects, you could configure the answerback string
+to be empty (see \k{config-answerback}); but writing binary files to
+your terminal is likely to cause various other unpleasant behaviour,
+so this is only a small remedy.
+
+\S{faq-wintitle}{Question} When I \cw{cat} a binary file, my window
+title changes to a nonsense string.
 
-Don't \cw{cat} binary files, then.
+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
@@ -519,8 +667,8 @@ 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.
 
-\S{faq-password} My keyboard stops working once PuTTY displays the
-password prompt.
+\S{faq-password-fails}{Question} 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.
@@ -530,10 +678,71 @@ as a row of asterisks either. This is so that someone looking at
 your screen can't even tell how \e{long} your password is, which
 might be valuable information.
 
+\S{faq-keyboard}{Question} 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 \e{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 \e{what} sequence the
+application is expecting.
+
+The simplest way to investigate this is to find some other terminal
+environment, in which that function key \e{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 \c{cat}, and then press the function key. This is
+likely to produce output of the form \c{^[[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 \q{I wanted the F1 key to send \c{^[[11~}, but instead it's
+sending \c{^[OP}, can this be done?}, or something similar.
+
+You should still read the
+\W{http://www.chiark.greenend.org.uk/~sgtatham/putty/feedback.html}{Feedback
+page} on the PuTTY website (also provided as \k{feedback} in the
+manual), and follow the guidelines contained in that.
+
+\S{faq-broken-openssh31}{Question} Since my SSH server was upgraded to
+OpenSSH 3.1p1, 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.
+
+This is not a PuTTY-specific problem; if you try to connect with
+another client you'll likely have similar problems.
+
+Configurations known to be broken (and symptoms):
+
+\b SSH 2 with AES cipher (PuTTY says "Assertion failed! Expression:
+(len & 15) == 0" in sshaes.c, or "Out of memory", or crashes)
+
+\b SSH 2 with 3DES (PuTTY says "Incorrect MAC received on packet")
+
+\b SSH 1 with Blowfish (PuTTY says "Incorrect CRC received on
+packet")
+
+\b SSH 1 with 3DES
+
+For more details and OpenSSH patches, see
+\W{http://bugzilla.mindrot.org/show_bug.cgi?id=138}{bug 138} in the
+OpenSSH BTS.
+
 \H{faq-secure} Security questions
 
-\S{faq-publicpc} Is it safe for me to download PuTTY and use it on a
-public PC?
+\S{faq-publicpc}{Question} 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
@@ -547,8 +756,8 @@ If you do trust the PC, then it's probably OK to use PuTTY on it
 be tampered with, so it would be better to carry PuTTY with you on a
 floppy).
 
-\S{faq-cleanup} What does PuTTY leave on a system? How can I clean
-up after it?
+\S{faq-cleanup}{Question} 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 \k{faq-settings}). If you are using PuTTY on a public
@@ -556,8 +765,8 @@ 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
 \c{putty -cleanup}.
 
-\S{faq-dsa} How come PuTTY now supports DSA, when the website used
-to say how insecure it was?
+\S{faq-dsa}{Question} How come PuTTY now supports DSA, when the
+website used to say how insecure it was?
 
 DSA has a major weakness \e{if badly implemented}: it relies on a
 random number generator to far too great an extent. If the random
@@ -574,7 +783,8 @@ use RSA instead.
 
 \H{faq-admin} Administrative questions
 
-\S{faq-domain} Would you like me to register you a nicer domain name?
+\S{faq-domain}{Question} Would you like me to register you a nicer
+domain name?
 
 No, thank you. Even if you can find one (most of them seem to have
 been registered already, by people who didn't ask whether we
@@ -590,12 +800,13 @@ to point where we wanted it, and wouldn't suddenly change or do
 strange things. Having it registered for us by a third party who we
 don't even know is not the best way to achieve this.
 
-\S{faq-webhosting} Would you like free web hosting for the PuTTY web
-site?
+\S{faq-webhosting}{Question} Would you like free web hosting for the
+PuTTY web site?
 
 We already have some, thanks.
 
-\S{faq-sourceforge} Why don't you move PuTTY to SourceForge?
+\S{faq-sourceforge}{Question} Why don't you move PuTTY to
+SourceForge?
 
 Partly, because we don't want to move the web site location (see
 \k{faq-domain}).
@@ -613,8 +824,8 @@ No offence to SourceForge; I think they do a wonderful job. But
 they're not ideal for everyone, and in particular they're not ideal
 for us.
 
-\S{faq-mailinglist1} Why can't I subscribe to the putty-bugs mailing
-list?
+\S{faq-mailinglist1}{Question} Why can't I subscribe to the
+putty-bugs mailing list?
 
 Because you're not a member of the PuTTY core development team. The
 putty-bugs mailing list is not a general newsgroup-like discussion
@@ -625,8 +836,8 @@ something more like a newsgroup and we would be completely
 overwhelmed by the volume of traffic. It's hard enough to keep up
 with the list as it is.
 
-\S{faq-mailinglist2} If putty-bugs isn't a general-subscription
-mailing list, what is?
+\S{faq-mailinglist2}{Question} If putty-bugs isn't a
+general-subscription mailing list, what is?
 
 There isn't one, that we know of.
 
@@ -638,7 +849,7 @@ forwarded on to us by the questioner. In any case, it's probably
 better to use the established newsgroup \cw{comp.security.ssh} for
 this purpose.
 
-\S{faq-donations} How can I donate to PuTTY development?
+\S{faq-donations}{Question} How can I donate to PuTTY development?
 
 Please, \e{please} don't feel you have to. PuTTY is completely free
 software, and not shareware. We think it's very important that
@@ -653,18 +864,31 @@ we won't argue :-) The easiest way for us to accept donations is if
 you go to \W{http://www.e-gold.com}\cw{www.e-gold.com}, and deposit
 your donation in account number 174769. Then send us e-mail to let
 us know you've done so (otherwise we might not notice for months!).
+Alternatively, if e-gold isn't convenient for you, you can donate to
+\cw{<anakin@pobox.com>} using PayPal
+(\W{http://www.paypal.com/}\cw{www.paypal.com}).
 
 Small donations (tens of dollars or tens of euros) will probably be
 spent on beer or curry, which helps motivate our volunteer team to
 continue doing this for the world. Larger donations will be spent on
 something that actually helps development, if we can find anything
-(perhaps new hardware, or a copy of Windows 2000), but if we can't
+(perhaps new hardware, or a copy of Windows XP), but if we can't
 find anything then we'll just distribute the money among the
 developers. If you want to be sure your donation is going towards
 something worthwhile, ask us first. If you don't like these terms,
 feel perfectly free not to donate. We don't mind.
 
-\S{faq-pronounce} How do I pronounce PuTTY?
+\S{faq-sillyputty}{Question} Where can I buy silly putty?
+
+You're looking at the wrong web site; the only PuTTY we know about
+here is the name of a computer program.
+
+If you want the kind of putty you can buy as an executive toy, the
+PuTTY team can personally recommend Thinking Putty, which you can
+buy from Crazy Aaron's Putty World, at
+\W{http://www.puttyworld.com}\cw{www.puttyworld.com}.
+
+\S{faq-pronounce}{Question} How do I pronounce PuTTY?
 
 Exactly like the normal word \q{putty}. Just like the stuff you put
 on window frames. (One of the reasons it's called PuTTY is because