Blog of Science





Original article:

http://jakub.kotrla.net/putty/

PuTTY як конфігурація збереження win32 в файл

Загальна інформація

PuTTY – це вільно розповсюджуваний клієнт telnet/ssh розроблений для Win32 і платформ Unix. Це програма формату «exe», яка не вимагає встановлення а також якихось додаткових файлів формату dll. Тобто, її можна запускати просто з диска, флеш накопичувача тощо.

Дана програма зберігає конфігурацію в реєстрі ([HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]), оскільки неможливо зберігати/завантажувати його з файлу на дискові та інших знімні пристрої. Існують також обхідні файли bat/reg, але ж вони не настільки ефективні. Саме тому, я трохи переписав програму PuTTY (winstore.c – функції, які добре підходять до конфігурації збереження/завантаження).

Я також вніс деякі ремарки до Pageant з тим, щоб можна було завантажувати список сесії зберігання (winpgnt.c з функцією update_sessions).

У разі, якщо ви знайшли якусь помилку в програмі, пов'язану із зберіганням/завантаженням конфігурації або несправність в оригінальній версії PuTTY, будь ласка, надсилайте листа на пошту jakub@kotrla.net. Моя модифікація, яку я вніс в програму PuTTY використовується в межах тієї ж самої ліцензії, що і оригінальна версія. Вона виконує ті самі функції, ви маєте право на виконання будь-яких задач в даній програмі.

Документація

Моя версія програми PuTTY зберігає всі конфігурації не в реєстр, як це робиться в оригінальній версії, а у файл. Кожна сесія та хост-ключ зберігаються в окремий файл. Існують такі шляхи за замовчуванням (де . представляє виконувану директорію):

  • ./sessions/packedSessionName
  • ./sshhostkeys/packedHostName
  • ./putty.rnd

Шлях до збереження конфігурації можна налаштувати через файл  putty.conf. Спочатку проводиться пошук поточної робочої директорії, і у разі, якщо putty.conf не знайдено, починається пошук виконуваної директорії (та сама директорія що і putty/pscp/psftp/plink/pageant.exe). putty.conf повинно мати наступний вигляд (тільки якщо не знайдено використовувані файли за замовчуванням):

                        ;comment line

                        sessions=%SYSTEMROOT%\ses

                        sshhostkeys=\ssh\hostkeys

                        seedfile=C:\putty.rnd

                        sessionsuffix=.session

                        keysuffix=.hostkey

                        jumplist=jumplist.txt

 

Можна користуватися змінними оточування в конфігурації (наприклад, %SYSTEMROOT%), що призведе до збільшення рядка через функцію ExpandEnviromentString WinAPI (підтримка користувацьких змінних на даний момент не підтримується).

sessionsuffix та keysuffix можна вибирати за бажанням, файли за замовчуванням пусті. Після налаштування, кожен файл повинен мати якийсь певний суфікс (тобто, суфікс для збережених сесій – sessionsuffix, а суфікс для хост-ключа shh – keysuffix). Головна мета – це уникнути появи “*.com”

Попередження: якщо ви вже зберегли деякі сесії чи хост-ключі ssh і ви вносите зміні до суфіксів, Вам потрібно буде перейменувати всі файли в ручному режимі.

Jumplist – це нова функція в Windows 7, яка працює на базі PuTTY 0.61. Дана версія PuTTY має бути спрощеною і якщо ви не зробите налаштування шляху в jumplist, зробити будь-які операції буде неможливо.

Однак, ця версія все ж таки може завантажувати конфігурацію з реєстру. Ті сесії, які завантажуються з реєстру мають позначку (реєстр). Коли PuTTY проводить пошук хост-ключа ssh і не може знайти його у файлі, але він є у реєстрі, Ви можете без проблем перемістити/скопіювати його у файл (або ж нічого не робити з ним).

Pageant завантажує список збережених сесій зі шляху, який заданий в putty.conf, а файл за замовчуванням - ./sessions/packedSessionName – у даному разі, вся операція проводиться таким чином, як у оригінальній версії PuTTY (звісно ж, враховуючи налаштування keysuffix).

 

Журнал змін проекту

 

Ця версія PuTTY постійно розвивається і тому з того часу, як я вперше випустив програму я вже встиг внести деякі зміни до програми та виправив наявні помилки. Я щойно розпочав випускати все нові і нові версії програми. Нижче ви знайдете всі зміни, додаткові функції та виправлені помилки.

  • 24. 11. 2005 – перша версія 0.1.1
  • 22. 3. 2006 - PSCP, PSFTP скомпільована & дороблена
  • 22. 3. 2006 – внесення виправлення до Pageant, щоб можна було працювати з sessionsuffix без помилок (версія 0.1.2)
  • 7. 8. 2006 - виправлено PSCP при завантаженні не існуючих налаштувань а також виправлена помилка  null handle (версія 0.1.3)
  • 9. 8. 2006 – добавлена функція ліпшого детектування "putty.exe directory" (версія 0.1.5)
  • 29. 9. 2006 - PLINK скомпільована & дороблена
  • 9. 1. 2007 – виправлена помилка збереження/завантаження налаштувань за замовчуванням (версія 0.1.6)
  • 25. 1. 2007 - Оновлення: модифікована версія PuTTY працює на основі PuTTY 0.59 & виправлено помилку в пам’яті програми (версія 0.2)
  • 24. 3. 2007 – Підтримка змінних оточення в файлі конфігурації & прочистка коду програми (версія 0.2.1)
  • 1. 5. 2007 - Оновлення: модифікована версія PuTTY тепер працює на основі PuTTY 0.60 (версія 0.3)
  • 15. 10. 2007 – виправлено показ "." і ".." сесій в списку сесій (версія 0.3.1)
  • 6. 3. 2008 – виправлено збій програми, якщо файл конфігурації не закінчується пустою лінією (версія 0.3.2)
  • 12. 8. 2008 – відтепер: зміна в роботі putty.con та робочих/виконуваних директорій
  • 4. 9. 2008 - pageant запускає putty.exe зі своєї робочої директорії & підтримка візуальних стилів на XP та Vista (версія 0.3.5)
  • 28. 7. 2009 – виправлена сесія видалення при налаштованому sessionsuffix на PuTTY (версія 0.3.6)
  • 4. 9. 2009 – як ви не можете знайти сесію на накопичувачеві, спробуйте знайти її у реєстрі (підтримується лише наWinSCP), також виправлені деякі помилки у CurrentDirectory (версія 0.3.7)
  • 7. 11. 2009 – Підтримка змінних оточення в сесійних файлах (версія0.3.8)
  • 12. 1. 2010 – виправлено завантаження сесії з назвою, яка може містити двокрапку та інші незрозумілі символи (версія 0.3.9)
  • 24. 8. 2011 - Оновлення: ця модифікована версія PuTTY працює на основі PuTTY 0.61 (версія 0.4), підтримка Win7 jumplist
  • 23. 2. 2012 - Оновлення: ця модифікована версія PuTTY працює на основі  PuTTY 0.62 (версія 0.5)
  • 8. 9. 2013 - Оновлення: ця модифікована версія PuTTY працює на основі PuTTY 0.63 (версія 0.6)
  • 13. 9. 2013 – Виправлено помилку появи коду 063; виправлено завантажені сесії з реєстру (версія 0.6.1)
  • 8. 3. 2015 - Оновлення: ця модифікована версія PuTTY працює на основі PuTTY 0.64 (версія 0.7), сесійні файли фільтруються завдяки sessionsuffix
  • 27. 9. 2015 - Оновлення: ця модифікована версія PuTTY працює на основі PuTTY 0.65 (версія 0.8)
  • 27. 9. 2015 - Оновлення: ця модифікована версія PuTTY працює на основі PuTTY Розвиток snapshot 2015-09-27.acff0a6, щоб можна було додавати нові коди, наприклад, ed25519 криві та chacha20. (версія 0.8.1)
  • 18. 11. 2015 - Оновлення: ця модифікована версія PuTTY працює на основі PuTTY 0.66 (версія 0.9)
  • 6. 12. 2015 - Оновлення: ця модифікована версія PuTTY працює на основі PuTTY Розвиток snapshot 2015-11-30.1659cf3, щоб можна було додавати нові коди, наприклад, ed25519 криві та chacha20. (версія 0.9.1)
  • 19. 3. 2016 - Оновлення: ця модифікована версія PuTTY працює на основі  PuTTY 0.67 (версія 0.10.0) Та розвиток snapshot 2016_03_18.0fadffe

Пожертвування

Якщо Ви вважаєте дану програму корисною, я буду вдячний Вам, якщо можете віддячити мені матеріальним пожертвуванням:

Make payments with PayPal - it's fast, free and secure!

Завантажити

·        Все в одному файлі ZIP – працює на основі PuTTY 0.67, - альтернативний варіант: Все в одному файлі ZIP – працює на основі розвитку снепшоту 2016_03_18.0fadffe

Попередні версії програми:

o   все в одному файлі ZIP (PuTTY 0.65, версія файлу 0.8.0)

o   все в одному файлі ZIP (PuTTY 0.64, версія файлу 0.7.0)

o   все в одному файлі ZIP (PuTTY 0.63, версія файлу 0.6.1)

o   все в одному файлі ZIP (PuTTY 0.63, версія файлу 0.6.0)

o   все в одному файлі ZIP (PuTTY 0.62, версія файлу 0.5.0)

o   все в одному файлі ZIP (PuTTY 0.61, версія файлу 0.4.1)

·        Індивідуальні виконувані файли:

o   PuTTY executable

o   PSCP executable

o   PLINK executable

o   PSFTP executable

o   Pageant executable

·        Вихідний код для перевірки мого коду

o   Переписаний winstore.c – PuTTY, PSCP, PLINK, PSFTP

o   Переписаний winpgnt.c – Pageant

·        Якщо Ви бажаєте побудувати переписаний PuTTY (PSCP, PLINK, PSFTP) самостійно, завантажте PuTTY ресурс для win32 зі сторінки завантажень PuTTY та замініть winstore.c на переписаний winstore.c.

·        Якщо Ви бажаєте побудувати переписаний Pageant самостійно, завантажте ресурс PuTTY для win32 зі сторінки завантажень та замініть winpgnt.c на переписаний winpgnt.c.

Подяка

Хочу подякувати 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 та Quip за тестування та ваші ідеї.

Останнє редагування статті: 14:50б 19.3.2016 (GMT +100 Прага) – співпадає з оригінальною PuTTY версії 0.67