[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