portaputty хорош тем, что лёжа на флешке позволяет под виндами рулить unix серверами по ssh. К сожалению, он не сохраняет пароли оставляя это на откуп внешнему ПО. Поначалу я хранил пароли в plane text, но когда их количество приблизилось к сотне, а ssh аккаунтов перевалило за второй десяток, то это стало не только неудобно, но и стремно. Поэтому вся база перекочевала в менеджер паролей
KeePass. Данные стали удобно структурированы, но это не решало проблемы метания между двумя программами на стадии входа. Выглядело это пример так.
Втыкается флешка, ищется и запускается portaputty, ищется нужная сохранная сессия, загружается, переходим в KeePass и копируем имя пользователя (причем буфер очищается через 10 секунд, так что клювом не щелкаем), вставляем его в portaputty, возвращаемся в KeePass и копируем пароль, переходим в окно portaputty и логинемся на сервере. Много типичных действий которые ну так и просятся на автоматизацию.
Хороший админ - ленивый админ. Тем более в KeePass есть такие заманчивые пункты в контекстном меню как "Открыть ссылку" и "Начать автонабор". Поэтому сегодня ручной труд меня окончательно достал и я решил разобраться в этом вопросе.
И так у меня в portaputty есть сохраненная сессия server в которой настроен удобный для меня вид терминала. В Windows - Behaviour - Window title задано название окна - ssh. Теперь в KeePass создаем новую запись, в поле Название пишем IP адрес сервера, в поле Имя логин, в поле Пароль наш пасс. Теперь в Ссылка нужно записать:
cmd://"G:\portaputty\putty.exe" -load server {USERNAME}@{TITLE}
а в Комментарии:
Auto-Type: {PASSWORD}{ENTER}
Auto-Type-Window: ssh
Теперь запуск portaputty выглядит так: в KeePass-е находим нужную запись, жмем Ctrl+U и таким образом запускаем portaputty, возвращаемся к записи в KeePass-е и шуткатом Ctrl+V логинимся на сервер. Все!
Что происходит между программа и почему я пришел именно к этим шаблонам в двух последних полях? Дело в том, что cmd://"G:\portaputty\putty.exe" запускает portaputty по указанному пути с опцией load равной имени нужной сессии, а так же логином и сервером в формате login@server. Причем сервер берется не тот, что сохранен в файле сессии, а из командной строки. {USERNAME}@{TITLE} это шаблон KeePass. Он берет значения полей Имя и Название и передает их как опции вызова portaputty. Все это срабатывает по Ctrl+U шуткату. А по Ctrl+V срабатывают команды из поля Комментарии. KeePass эмулирует вставку текста из поля Пароль (шаблон {PASSWORD}) и нажание Enter (шаблон {ENTER}, кстати, вместо которого можно использовать тильду) окне с заголовком ssh. Такая схема позволяет мне иметь только одну сессию для всех серверов. Потому что для другого аккаунта в KeePass храниться другой IP адрес сервера и именно его и использует portaputty, а не заданные в сессии. Поэтому я не только упростил процедуру входа, но и избавился от кучу сессий которые между собой были идеинтичны за исключением IP адреса сервака.
Ситуацию немного портит то, что запускается portaputty с русской раскладкой (ибо стоит в системе по дефолту) и по Ctrl+V из KeePass-а вставляется пароль, но кириллицей, хотя он в латинице. Явная "фича" KeePass, но написание багрепорта отложу на потом.