PuTTY for win32 storing configuration into file
Information
PuTTY is a great free telnet/ssh client for Win32 and Unix platforms.
It's just one "exe", no install, no extra dlls are required.
So it can be run from usb flash disk etc.
But it stores all configuration into registry ([HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]) - you cannot store/load it from file on the floppy or other removable devices.
There is a workaround with bat/reg files
but that isn't very nice. So I've rewritten small part of PuTTY (storage.c - functions which handle storing/loading configuration).
I've rewritten small part of Pageant too, to be able to load list of stored session (winpgnt.c - function update_sessions).
If you find a bug related to storing/loading configuration or not present in original PuTTY
feel free to e-mail it to jakub@kotrla.net.
My modification to PuTTY is under same licence as PuTTY
- you can do anything with it but at your own risk and without any warranty.
Documentation
This PuTTY stores its configuration (sessions, ssh host keys, random seed file path) to file instead of registry.
Every session and ssh host key is stored in a separate file. Default paths are (where . represents executable directory):
- ./sessions/packedSessionName
- ./sshhostkeys/packedHostName
- ./putty.rnd
Path for saving configuration can be set via file putty.conf. Current working directory is searched first, if putty.conf is not found there,
executable directory (same directory as putty/pscp/psftp/plink/pageant.exe) is searched.
putty.conf should look like this (if it's not found defaults are used):
;comment line
sessions=%SYSTEMROOT%\ses
sshhostkeys=\ssh\hostkeys
seedfile=C:\putty.rnd
sessionsuffix=.session
keysuffix=.hostkey
jumplist=jumplist.txt
You can use enviroment variables in config (like %SYSTEMROOT%) - string will be expanded via ExpandEnviromentString WinAPI function
(user-specific variables are not supported yet).
sessionsuffix
and keysuffix
are optional, defaults are empty. If set, every file has a suffix as defined
(saved sessions via sessionsuffix
and ssh host keys via keysuffix
).
Primary purpose is to avoid "*.com
" files from names like ssh.domain.com
.
Both are limited to 15 characters.
Warning: if you already have saved some sessions or ssh host keys and you change these suffixes,
you have to manually rename (append them to) all files.
Jumplist is new feature in Windows 7 supported by PuTTY 0.61. Because this PuTTY should be lightweight, if you do not set path to jumplist, none will be created.
This PuTTY is still able to load configuration from registry. Sessions loaded from registry are marked [registry].
When PuTTY is checking ssh host key and it's not found in file but in registry, you can move/copy key to file
(or of course do nothing).
Pageant loads list of saved sessions from path set in putty.conf, defaults is ./sessions/packedSessionName
- it works the same way as PuTTY (including keysuffix
setting).
ChangeLog
This PuTTY is still evolving, since the first simple release I've added some features and fixed a few bugs.
So I've just started numbering versions. Every future change, feature and bugfix will appear here.
- 24. 11. 2005 - first version 0.1.1
- 22. 3. 2006 - PSCP, PSFTP compiled & added
- 22. 3. 2006 - fixed Pageant to work with
sessionsuffix
correctly (version 0.1.2)
- 7. 8. 2006 - fixed PSCP when loading non-existent settings silently & null handle bug fixed (version 0.1.3)
- 9. 8. 2006 - much better "putty.exe directory" detection added (version 0.1.5)
- 29. 9. 2006 - PLINK compiled & added
- 9. 1. 2007 - fixed to save/load Default Settings (version 0.1.6)
- 25. 1. 2007 - Update: this modified PuTTY is now based on PuTTY 0.59 & minor memory leak fixed (version 0.2)
- 24. 3. 2007 - Support for enviroment variables in config file & code clean-up (version 0.2.1)
- 1. 5. 2007 - Update: this modified PuTTY is now based on PuTTY 0.60 (version 0.3)
- 15. 10. 2007 - fixed showing "." and ".." sessions in session list (version 0.3.1)
- 6. 3. 2008 - fixed crash if config file does not end with blank line (version 0.3.2)
- 12. 8. 2008 - since now: change in handling putty.conf and working/executable directories
- 4. 9. 2008 - pageant starts putty.exe in its (pageant's) working directory & XP and Vista visual styles supported (version 0.3.5)
- 28. 7. 2009 - fixed session deletion when sessionsuffix set in PuTTY (version 0.3.6)
- 4. 9. 2009 - if session not found on disk, try in registry (for WinSCP support), fixed minor bug with CurrentDirectory (version 0.3.7)
- 7. 11. 2009 - Support for enviroment variables in session files (version 0.3.8)
- 12. 1. 2010 - fixed loading of session with names containing colon(:) and other weird characters (version 0.3.9)
- 24. 8. 2011 - Update: this modified PuTTY is now based on PuTTY 0.61 (version 0.4), support for Win7 jumplist
- 23. 2. 2012 - Update: this modified PuTTY is now based on PuTTY 0.62 (version 0.5)
- 8. 9. 2013 - Update: this modified PuTTY is now based on PuTTY 0.63 (version 0.6)
- 13. 9. 2013 - Fixed error from merging code with 063 - loading sessions from registry fixed (version 0.6.1)
- 8. 3. 2015 - Update: this modified PuTTY is now based on PuTTY 0.64 (version 0.7), session files are filtered by sessionsuffix
- 27. 9. 2015 - Update: this modified PuTTY is now based on PuTTY 0.65 (version 0.8)
- 27. 9. 2015 - Update: this modified PuTTY is now based on PuTTY Development snapshot 2015-09-27.acff0a6 to provide some new ciphers e.g. ed25519 curves and chacha20. (version 0.8.1)
- 18. 11. 2015 - Update: this modified PuTTY is now based on PuTTY 0.66 (version 0.9)
- 6. 12. 2015 - Update: this modified PuTTY is now based on PuTTY Development snapshot 2015-11-30.1659cf3 to provide some new ciphers e.g. ed25519 curves and chacha20. (version 0.9.1)
- 19. 3. 2016 - Update: this modified PuTTY is now based on PuTTY 0.67 (version 0.10.0) and Development snapshot 2016_03_18.0fadffe
- 6. 11. 2016 - recompiled in debug mode to avoid false positives of overcautious Antivirus SW
- 20. 3. 2017 - Update: this modified PuTTY is now based on PuTTY 0.68 (version 0.11.0)
- 14. 8. 2017 - Update: this modified PuTTY is now based on PuTTY 0.70, fixed location of PUTTY.RND to be read from putty.conf and used correctly (version 0.12.0)
- 28. 4. 2019 - Update: this modified PuTTY is now based on PuTTY 0.71 (version 0.13.0)
- 29. 9. 2019 - Update: this modified PuTTY is now based on PuTTY 0.72 (version 0.14.0)
- 1. 10. 2019 - Update: this modified PuTTY is now based on PuTTY 0.73 (version 0.15.0)
- 18. 8. 2020 - Update: this modified PuTTY is now based on PuTTY 0.74 (version 0.16.0)
- 10. 5. 2021 - Update: this modified PuTTY is now based on PuTTY 0.75 (version 0.17.0)
- 29. 8. 2021 - Update: this modified PuTTY is now based on PuTTY 0.76 (version 0.18.0)
- 29. 5. 2022 - Update: this modified PuTTY is now based on PuTTY 0.77 (version 0.19.0)
- 11. 12. 2022 - Update: this modified PuTTY is now based on PuTTY 0.78 (version 0.20.0)
- 29. 10. 2023 - Update: this modified PuTTY is now based on PuTTY 0.79 (version 0.21.0)
- 27. 12. 2023 - Update: this modified PuTTY is now based on PuTTY 0.80 (version 0.22.0)
- 2. 6. 2024 - Update: this modified PuTTY is now based on PuTTY 0.81 (version 0.23.0)
Donate
If you find my patch useful, I'll be happy if you say thanks in some other way:
Download
You can get binaries here.
If you want to build yourself - download PuTTY source for win32 from PuTTY Download Page and replace
pageant.c and storage.c.
Thanks
Thanks to Sebastian Juerges, Sebastian Królak, Scott Akesson, Przemysław Sztoch, James Hoffman, Jones Down, Harold Hunt,
Dmitry Gromov, Gorkum L. van, Kyle Brazell, Sergey Makarenko, Anthony Valentine, Jason K Larson,
tzeentch and Quip for testing and ideas.
Thanks to Mieczysław Nalewaj for providing prepared changes.
Last update 17:45, 2. 6. 2024 (GMT +1:00 Prague) - actual with original PuTTY version 0.81