Если sshd cygwin'а выдаёт Win32 error 1062

Отправлено 14 мар. 2012 г., 9:15 пользователем Anton Derbenev   [ обновлено 14 мар. 2012 г., 9:19 ]

После обновления cygwin с 1.5.* до последней на данный момент версии 1.7.1 поймал я беду, sshd перестал запускаться. Что хуже – он ничего не писал в логи! Всё, что я видел после cygrunsrv -S sshd

cygrunsrv: Error starting a service:
QueryServiceStatus: Win32 error 1062:
The service has not been started.

Удаление и переконфигурация службы, переустановка cygwin поверх, удаление и полная переустановка не помогли.

В официальных мэиллистах cygwin'а сидят жирные тролли-модераторы, которые вместо попыток разобраться в проблеме пространно рассуждают о том, что не открыто указывать адреса e-mail (с @), но у самих такие адреса в подписях, что не стоит брать информацию из неофициальных источников, то есть откуда угодно, кроме их сайта, и так далее.

Интересным ресурсом показался этот: www.noah.org/wiki/Sshd_on_Windows#Win32_error_1062, однако и там оказался не мой случай.

Так что после безуспешных попыток поиска причины взял я в зубы procmon и начал копать. Проблему нашел быстро, и всё оказалось довольно прозаично.

У меня в отдельной папке лежат часто используемые утилиты, в том числе есть несколько cygwin'овских, и к ним cygwin1.dll. А эта папка в %PATH%. Так вот sshd пытался загрузить конфиги из папки ../etc/ по отношению к папке с этим cygwin1.dll, а не с тем, который в C:\cygwin\bin. Убрал я cygwin1.dll из папки с системными утилитами, добавил C:\cygwin\bin в PATH, и всё заработало.

P.S. Старое руководство по установке cygwin'овского sshd: ist.uwaterloo.ca/~kscully/CygwinSSHD_W2K3.html. Оно реально старое (для cygwin 1.5), так что не стоит бездумно выполнять его предписания, но как ориентир того, что и в каком порядке должно происходить, вполне неплохо.

Comments