Назад | Перейти на главную страницу

Как избавиться от QueryServiceStatus: Win32 error 1062 при попытке запустить sshd на Cygwin?

Я установил Cygwin и sshd в Windows 7, но не могу заставить их работать.

Я следил за руководством из http://www.noah.org/ssh/cygwin-sshd.html но я все равно получаю:

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

Детали конфигурации:

Обновление: журналы Windows жалуются на Possible duplicate cygwin1.dll

Спасибо, ваше обновление было решением - для всех, кто там есть, есть рецепт №3 против ошибки Win32 1062 при запуске Cygwin:

1) Проверьте журнал событий приложения, посмотрите, есть ли там события уровня «Информация» с чем-то вроде: «sshd: PID: Возможный дубликат cygwin1.dll:»

Найдите этот глупый дубликат в указанном месте и переименуйте его или как-нибудь избавьтесь от него. Мой был в "/ cygdrive / c / Program Files (x86) /socat-1.7.2.0/cygwin1.dll".

Бу, сокат! Видимо они занимаются 3ПП. Я даже не знал, что socat был в моей системе, очевидно, он был частью какой-то другой установки. Я нашел еще двух человек в списках рассылки cygwin, страдающих от проблемы с дублированием dll.

Спасибо @HopelessN00b, @user155148, @Algomorph комбинация ваших решений меня подтолкнула.

Суть

У меня было две проблемы:

  1. Дубликат cygwin1.dll файлы.
  2. /var/log/sshd.log: "Пользователь с разделением привилегий sshd не существует"

Мое исправление

  1. Разберитесь с кровавыми дубликатами файлов рассола:

    cd /cygdrive/c/Program\ Files\ \(x86\)/cwRsync/bin
    mv cygwin1.dll cygwin1_.dll
    
  2. Добавил пользователя редактированием /etc/passwd и добавив следующую строку:

    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    

Обратите внимание, что имя пользователя sshd пришло из /var/log/sshd.log.


GAD, какая это заноза в заднице!

Я нашел еще один ресурс, этот более подробный и из Oracle

Вкратце, если у вас greif:

  1. Выполните каждый из этих шагов ОДИН. В. А. Кровавый. ВРЕМЯ.
    ... исправить
    .....бегать cygrunsrv -S sshd
    ....... обильно ругаться
  2. Проверьте журналы событий Windoze.
    ... У вас есть дубликаты DLL файлов ??
  3. Взгляни на /var/log/sshd.log
    ...У вас есть /etc/passwd проблемы?

У меня был (почти) такой же эффект и аналогичное решение: журнал приложений показал дублированный файл

Возможный дубликат cygwin1.dll: /cygdrive/c/dakota/bin/cygwin1.dll ..

из моей установки dakota. Переименование этой dll помогло. Спасибо!

У меня была проблема с разделением привилегий. В этом случае добавление строки к /etc/passwd файл решил проблему.

sshd: x: 74: 74: SSH с разделением привилегий: / var / empty / sshd: / sbin / nologin

Для меня это оказалось проблемой совместимости. Пытался запустить в Win7. Исправлено щелчком правой кнопкой мыши по файлу в проводнике, переход к совместимости и настройке совместимости с Windows Server 2003. После этого все работало нормально.

Нашел решение здесь:

http://h30499.www3.hp.com/t5/Windows-Server-2008/Installing-OpenSSH-on-Windows-server-2008/td-p/4777839#.U0cmzle2wuI

Обратите внимание, что моя проблема была связана конкретно с попыткой запустить OpenSSH Server, который, как мне кажется, использует облегченную версию Cygwin.

Ответ / etc / passwd был очень близок, но UID 74 был специфическим для его установки.

вместо этого используйте эту команду cygwin, чтобы получить правильный UID.

mkpasswd -l -u sshd >> / etc / passwd

Кажется, это вызвано ЛЮБОЙ ошибкой с сервером sshd - в моем случае он отключился /etc/ssh_host_rsa_key завивка - должно быть 0600. смотреть в /var/log/sshd или похожие.

В клиентской системе я обнаружил программу под названием RDPlus (www.rdplus.com.au), запускающую параметр SSH-туннелирования на порту 22, который мне пришлось отключить до запуска Cygwin sshd. Из CMD.EXE команда netstat -abo указала на этот процесс после обнаружения ошибки «Привязка к порту 22 на 0.0.0.0 не удалась» в журнале событий приложений. Параметр «o» покажет PID, который можно найти в диспетчере задач.

Чтобы отключить это, запустите инструмент администрирования RDPlus, перейдите на вкладку «Интернет» и отключите SSH-туннелирование.

Кто-то разместил это в другом вопросе Stack Exchange, но если у вас есть пустой файл в /var/log/sshd, Ты должен попытаться /usr/sbin/sshd. Это выведет ошибки, которых вы не попали в журнал.

Для меня удаление служб sshd, перезагрузка и повторный запуск ssh-host-config, следуя эти инструкция, помогло (ls -l /var/etc сказал мне, что в моей первой попытке пустая папка принадлежала SYSTEM, что имеет смысл, поскольку я следил за этот учебник ранее. Однако таким образом я получил ошибку «/ var / empty должен принадлежать root, а не группе или доступу для записи всем»).

Я использовал Cntlm (Прокси-сервер проверки подлинности NTLM), который содержит cygwin1.dll и предотвращение такого дублирования решило проблему.

Я использую локальную учетную запись cyg_server для запуска sshd. Мне нужно было установить разрешения для / var / empty на 700, а для владельца - на cyg_server, несмотря на то, что в сообщении об ошибке говорилось, что владельцем должен быть root.

Я также удалил сообщение дня (/ etc / motd), но не думаю, что это строго необходимо. Иногда это мешает моей автоматизации.

FWIW, cyg_server - это строго локальный пользователь с правами администратора и без определения Active Directory. Он указан в реестре и в / etc / passwd.

Мне также пришлось отредактировать права cyg_server после принятия недавнего обновления Cygwin.

cygrunsrv -E sshd
editrights -a SeAssignPrimaryTokenPrivilege -u cyg_server
editrights -a SeCreateTokenPrivilege -u cyg_server
editrights -a SeTcbPrivilege -u cyg_server
editrights -a SeServiceLogonRight -u cyg_server
cygrunsrv -S sshd

остановил sshd, изменил права учетной записи службы и перезапустил sshd.

Вот как устанавливаются права после этого быстрого сеанса.

bash-4.4$  editrights -u cyg_server -l
SeAssignPrimaryTokenPrivilege
SeCreateTokenPrivilege
SeTcbPrivilege
SeServiceLogonRight
SeDenyRemoteInteractiveLogonRight
bash-4.4$