无法启动 cygwin sshd 服务

Posted

技术标签:

【中文标题】无法启动 cygwin sshd 服务【英文标题】:Unable to start cygwin sshd service 【发布时间】:2013-07-18 03:34:57 【问题描述】:

我在cygwin提示符下输入ssh-host-config(以管理员权限启动),对权限分离说yes,新建本地账户sshd,将sshd安装为服务;我没有为守护进程输入 CYGWIN 的值;我输入了 no 以使用不同的名称;是的,用于创建新的特权用户帐户。

在我的services.msc 中我无法启动服务:

The CYGWIN sshd service on Local Computer started and then stopped. 
Some services stop automatically if they are not in use by other services
or programs.

在 cygwin 提示符下,net start sshd 产生:

The CYGWIN sshd service could not be started. 
The service did not report an error.
More help is available by typing NET HELPMSG 3534

在 cygwin 提示符下,cygrunsrv -S sshd 产生:

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

我的 /var/log/sshd.log 显示以下内容:

Unable to initialize device PRN

我已经搜索了与此问题相关的 SO 问题以及一般 Internet,我想是什么让我的问题与众不同与 sshd.log 相关。我找不到其他收到此邮件的人。

我这样做是为了在我的 Windows 上安装 Hadoop。我无法在这台速度慢的计算机上运行虚拟机,因为一切都陷入了困境。

【问题讨论】:

我在 Windows 7 中遇到了完全相同的问题。我已经关注了各种链接,但问题仍然存在。我关注的一些链接是:ebiquity.umbc.edu/Tutorials/Hadoop/00%20-%20Intro.html、gist.github.com/tariqmislam/2159173。任何阅读本文的人都可以提供解决方案。 【参考方案1】:

我按照本主题中的步骤操作,但问题仍然存在,然后我检查了 sshd 日志文件,它抱怨 ssh 私钥的权限是打开的。

我执行了以下命令:

chmod 400 /etc/ssh_host_ecdsa_key

然后我运行服务:

net start sshd

终于成功了(顺便说一句:我使用的是 Windows 8)

【讨论】:

感谢您的回答。这也适用于 Windows 8.1。我会赞成答案。 chmod -v 600 /etc/ssh_*_key ; ls -altr /etc/ssh*key 在我的情况下,有四个。在 Cygwin 中,关于 Win 8.1 的波兰语版本的某些内容导致全球范围内的组 rw perms。 CYGWIN=ntsec 你说你按照这个主题的步骤,那没有意义,你能详细说明一下,如果没有,你当时应该有。 也适用于 Windows 7。在尝试了 6 小时后,唯一对我有用的东西 这解决了我的问题。我删除了所有的密钥和配置文件,再次运行ssh-host-config【参考方案2】:

我遇到了同样的问题,这是对我有用的解决方案。

解决方案 1

设置路径环境变量指向Cygwin bin目录后重启机器,然后启动服务。

解决方案 2

    首先将运行Cygwin sshd 恶魔服务的账号加入管理员组(默认是这个)

    转到你的 cygwin 安装文件夹(我的在 c:\cygwin64,你的可能不同)

    添加管理员组作为完全控制。删除属性 为您的 cygwin 安装文件夹删除只读,以便任何人都可以写入它

    以管理员身份运行 cygwin 终端并通过键入删除服务

    cygrunsrv -R sshd
    

    重启系统

    以管理员身份运行 cygwin 终端,然后键入

    重新安装服务
    ssh-host-config -y
    

    以管理员身份运行 cygwin 终端并通过键入启动服务

    net start sshd
    

您的服务现在正在运行!

【讨论】:

我使用的是 Windows 10。我在“属性”>“安全”中看不到管理员组。我没有看到“只读”选项。我在第 3 步 ``` $ cygrunsrv -R sshd cygrunsrv:删除服务时出错:OpenService:Win32 错误 1060:指定的服务不作为已安装的服务存在。 ```【参考方案3】:

我尝试了上述解决方案,但对我没有任何帮助。 我正在使用 Windows 8 并且能够解决它。 我的 sshd.log 文件说:“权限分离用户 sshd 不存在 FAILED”

所以要在启动 sshd 作为服务时消除此错误,请按照以下步骤操作:

    编辑文件 /etc/passwd -- 添加“ sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ”。

    编辑文件 /etc/group -- 添加“ sshd:x:74:”。

现在启动服务为 网络启动sshd

它对我有用!

【讨论】:

你知道为什么会这样吗?你是怎么发现的? 编辑(实际创建)passwd 文件为我解决了(2.7.3)64 位版本的 Windows 版 Git 附带的 sshd 的这个问题。 (在使用 Cygwin 15 年后,几个月前我放弃了它,转而使用 Git 附带的实用程序,我一点也不怀念它)我不必编辑/创建组文件。我唯一需要做的就是 mkdir /var/empty【参考方案4】:

按照 Andrea 解决方案 1 和解决方案 2 提供的步骤,它不起作用。事件查看器未提供任何信息。

所以先看了一下日志 var/log/sshd.log 它抱怨它无法加载 dll:

/usr/sbin/sshd.exe: error while loading shared libraries: cygcrypto-1.0.0.dll

解决办法:

重新安装软件包并确保 dll 在 lib 中。

再次启动服务仍然失败,但这次它抱怨缺少主机密钥。

无法加载主机密钥:/etc/ssh_host_dsa_key 无法加载主机密钥:/etc/ssh_host_ecdsa_key 禁用协议版本 2。无法加载主机密钥 sshd:没有可用的主机密钥 -- 正在退出。

解决方案:

转到 Cygwin 命令提示符(以管理员身份运行)和 输入ssh-keygen -A 已生成缺少的主机密钥。

终于可以启动了。

如果上述解决方案不起作用,我建议进一步查看日志文件。

【讨论】:

是的!!! 一定要看看var/log/sshd.log!我的错误是“权限分离用户sshd不存在”所以我再次运行ssh-host-config来启用权限分离:)【参考方案5】:

就我而言(使用波兰版本的 Windows 8),我必须手动修改 /etc/passwd 和 /etc/group 文件。

Administrators、Administrators、Guest、Guests 等的一些行丢失了,所以我只是插入了它们,并从它们的非英文版本中复制了所有其他字段。例如。

nano   /etc/passwd

SYSTEM:*:18:544:,S-1-5-18::
LocalService:*:19:544:U-NT AUTHORITY\LocalService,S-1-5-19::
NetworkService:*:20:544:U-NT AUTHORITY\NetworkService,S-1-5-20::
Administrators:*:544:544:,S-1-5-32-544::
Administratorzy:*:544:544:,S-1-5-32-544::
TrustedInstaller:*:4294967294:4294967294:U-NT SERVICE\TrustedInstaller,S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464::
Administrator:unused:500:513:U-gordito\Administrator,S-1-5-21-580982140-4090956935-1935414389-500:/home/Administrator:/bin/bash
Guest:unused:501:513:U-gordito\Gość,S-1-5-21-580982140-4090956935-1935414389-501:/home/Gość:/bin/bash
Gość:unused:501:513:U-gordito\Gość,S-1-5-21-580982140-4090956935-1935414389-501:/home/Gość:/bin/bash
HomeGroupUser$:unused:1004:513:HomeGroupUser$,U-gordito\HomeGroupUser$,S-1-5-21-580982140-4090956935-1935414389-1004:/home/HomeGroupUser$:/bin/bash
sshd:unused:1006:513:sshd privsep,U-gordito\sshd,S-1-5-21-580982140-4090956935-1935414389-1006:/var/empty:/bin/false
cyg_server:unused:1007:513:Privileged server,U-gordito\cyg_server,S-1-5-21-580982140-4090956935-1935414389-1007:/var/empty:/bin/false


nano /etc/group

root:S-1-5-32-544:0:
SYSTEM:S-1-5-18:18:
TrustedInstaller:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464:4294967294:
Administrators:S-1-5-32-544:544:
Administratorzy:S-1-5-32-544:544:
Czytelnicy dzienników zdarzeń:S-1-5-32-573:573:
Guests:S-1-5-32-546:546:
Goście:S-1-5-32-546:546:
IIS_IUSRS:S-1-5-32-568:568:
Users:S-1-5-32-545:545:
Users DCOM:S-1-5-32-562:562:
Użytkownicy:S-1-5-32-545:545:
Użytkownicy DCOM:S-1-5-32-562:562:
Użytkownicy dzienników wydajności:S-1-5-32-559:559:
Użytkownicy monitora wydajności:S-1-5-32-558:558:
Użytkownicy zarządzania zdalnego:S-1-5-32-580:580:
HomeUsers:S-1-5-21-580982140-4090956935-1935414389-1003:1003:
TelnetClients:S-1-5-21-580982140-4090956935-1935414389-1005:1005:
WinRMRemoteWMIUsers__:S-1-5-21-580982140-4090956935-1935414389-1000:1000:
None:S-1-5-21-580982140-4090956935-1935414389-513:513:
Brak:S-1-5-21-580982140-4090956935-1935414389-513:513:

只有在这之后,我终于能够chmod g-rwx所有冒犯 sshd 的文件,在某种程度上,“ls -la”确实确认了对组和其他人的删除权限。

最后,特权 CYGWIN 服务安装并启动(sshd,cron)

【讨论】:

无论如何,我认为这是一个 Cygwin 安装错误。以上是一种解决方法....一旦有人最终意识到真正发生了什么。

以上是关于无法启动 cygwin sshd 服务的主要内容,如果未能解决你的问题,请参考以下文章

linux中sshd是什么(ssh服务无法启动解决办法)

解决docker容器无法sshd开机自启动

解决docker容器无法sshd开机自启动

ssh无法远程登陆问题汇总

Ubuntu下怎么启动sshd服务

在windows上配置cygwin时出现这样的错误怎么解决