[devel] ssh-imap for windows mini-howto

Mikhail Yakshin =?iso-8859-1?q?greycat_=CE=C1_altlinux=2Eorg?=
Сб Авг 9 22:30:42 MSD 2003


Приветствую!

Мне тут не по свой воле приходится довольствоваться только 
Windows-машиной, поэтому пришлось все-таки домучать способ чтения нашей 
сверхсекьюрной почты через ssh-imap из Windows. Может кому еще поможет, 
поэтому я решил это описать все...

Мини-руководство по доступу к IMAP-серверу в SSH-туннеле из Windows
===================================================================

Основная мысль используется точно такая же, как и в аналогичном способе
из UNIX-системы. В UNIX системе мы использовали для этого:

1. openssh-клиент "ssh" для организации туннеля и запуска на удаленном
сервере rimapd

2. xinetd для организации видимого "чистого" подключения на порте
локальной машины

У меня получилось сделать то же самое в Windows, используя:

1. putty suite для организации туннеля

2. wsinetd в качестве эмулятора xinetd

Как сделать то же самое по шагам:

1. Скачать необходимый софт. Все доступно под BSD и/или GPL лицензиям.

Весь putty suite - нам понадобятся практически все программы
http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip

wsinetd
http://prdownloads.sourceforge.net/wsinetd/wsinetd_0.3.8.zip?download

2. Взять putty.exe, проверить, что в принципе можно поключиться к нужному
вам хосту хотя бы с авторизацией по паролю.

3. Посмотреть на свой приватный ключ от OpenSSH. Putty-семейство не умеет
понимать напрямую этот формат ключей, поэтому придется его сконвертировать
в родной формат putty private keys (расширение ppk). Сделать это можно
с помощью puttygen.exe, загрузить ключ через меню Conversions/Import key
и просто записать его (Save private key), ничего не меняя.

4. Взять pageant.exe (это ssh key agent), загрузить, сделать Add key и
добавить файл с ключом, сгенерированным на предыдущем шаге. Проверить,
что теперь такой же коннект через putty.exe (GuI-терминал), как вы делали
на шаге 1, делается автоматически по логину и ключу.

5. Распаковать wsinetd, убить тот очень несекьюрный конфиг, что там идет
с ним и вписать в файл wsinetd.conf единственную строчку, что-то типа
такого:

PORT    50    c:\distrib\plink.exe plink -ssh greycat на lrn.ru exec 
/usr/sbin/rimapd

Здесь слово PORT замените на какой-нибудь высокий и не очень тривиально
угадываемый порт. 50 - это ограничение на одновременное число подключений
к такому порту. Можно поставить 1, но, например, Мозилла очень любит 
одновременно
3-4-5 потоками залезать на IMAP, поэтому я на всякий случай поставил 
побольше.
c:\distrib\plink.exe - путь к замечательной программе plink.exe, которая
находится все в том же архиве putty.zip. Она выполняет роль консольного
ssh клиента. greycat на lrn.ru - логин и хост, к которому коннектится. 
Авторизация
будет происходить по ключам. exec /usr/sbin/rimapd - уже знакомая фраза 
вызова
rimapd.

6. Запустить wsinetd в консоли командой wsinetd -d
Это запустит wsinetd _не_ сервисом, благодаря чему запущенная из под 
него plink
сможет успешно сконнектится с агентом pageant, висящим у вас в трее и 
получить
от него ключи. Если сделать более нормальным образом (wsinetd -i, 
поставить и
запустить соответствующий сервис NT), то почему-то plink не может найти 
ключи
и агента. У меня получилось запускать plink с параметром -p, указывая в 
конфиге
чистым текстом пароль, но это очень плохое решение, как мне кажется, 
however,
your mileage may vary (C). По крайней мере у меня не получилось 
заставить нормально
работать wsinetd в качестве сервиса - если у кого-то получится - буду рад
услышать, как.

7. Запустить почтовый клиент, добавить IMAP аккаунт, как обычно - хост - 
localhost,
порт - тот, который вы указали в качестве PORT выше. Можно пользоваться.

Замечания:

1. Я пробовал только на том, что у меня сейчас есть: Windows XP Home, 
Version 5.1,
xpsp2.030422-1633 : Service Pack 1, Mozilla Messenger 1.4-alt4 for 
Windows. Теоретически
проблем быть не должно нигде. Хотя на не-NT Windows-системах могут 
возникнуть
сложности с wsinetd.

2. Насколько я понял, wsinetd слушает указанный порт на всех 
интерфейсах, а не только
на localhost. Что просто ужасно, но с другой стороны на столь дырявой 
системе - какая
разница...

3. В принципе если совсем наплевать на секьюрити, то можно не 
авторизовываться по ключам,
а просто прописать для plink параметр -p с паролем в чистом виде, тогда 
шаги 3-4 можно
не делать ;)

WBR, Mikhail Yakshin AKA GreyCat






Подробная информация о списке рассылки Devel