![SSH 服务无法在全新安装的 Cygwin 1.7.15 上启动](https://linux22.com/image/1316563/SSH%20%E6%9C%8D%E5%8A%A1%E6%97%A0%E6%B3%95%E5%9C%A8%E5%85%A8%E6%96%B0%E5%AE%89%E8%A3%85%E7%9A%84%20Cygwin%201.7.15%20%E4%B8%8A%E5%90%AF%E5%8A%A8.png)
操作系统:Windows 7 x64
Cygwin:1.7.15-1
OpenSSH:6.0p1-1
我正在尝试在 Windows 7 上安装 SSH 服务器。我所遵循的教程如下:http://www.howtogeek.com/howto/41560/how-to-get-ssh-command-line-access-to-windows-7-using-cygwin/
问题是,执行net start sshd
命令后我得到以下输出:
CYGWIN sshd 服务正在启动。 CYGWIN sshd 服务无法启动。服务没有报告错误。
输入 NET HELPMSG 3534 即可获得更多帮助。
以下是该设置的完整输出:
管理员用户@ThisComputer ~ $ ssh-主机配置 *** 信息:生成 /etc/ssh_host_key *** 信息:生成 /etc/ssh_host_rsa_key *** 信息:生成 /etc/ssh_host_dsa_key *** 信息:生成 /etc/ssh_host_ecdsa_key *** 信息:创建默认的 /etc/ssh_config 文件 *** 信息:创建默认的 /etc/sshd_config 文件 *** 信息:自 OpenSSH 3.3 起,权限分离默认设置为是。 *** 信息:但是,这需要一个名为“sshd”的非特权帐户。 *** 信息:有关权限分离的更多信息,请阅读 /usr/share/doc/openssh/README.privsep。 *** 查询:是否应使用特权分离?(是/否)是 *** 信息:请注意,创建新用户需要当前帐户具有 *** 信息:管理员权限。如果此脚本尝试创建 *** 查询:新的本地帐户‘sshd’?(是/否)是 *** 信息:更新 /etc/sshd_config 文件 *** 查询:您是否要将 sshd 安装为服务? *** 查询:(如果已经作为服务安装,请回答“否”) (是/否) 是 *** 查询:输入守护进程的 CYGWIN 值:[] *** 信息:在 Windows Server 2003、Windows Vista 及更高版本上, *** 信息:SYSTEM 帐户无法将 setuid 设置为其他用户 -- 一种功能 *** 信息:sshd 需要。您需要拥有或创建特权 *** 信息:帐户。此脚本将帮助您完成此操作。 *** 信息:您似乎正在运行 Windows XP 64 位、Windows 2003 Server, *** 信息:或更高版本。在这些系统上,无法使用 LocalSystem *** 信息:无需 *** 信息:显式密码(例如无密码登录[例如公钥 *** 信息:通过 sshd 进行身份验证)。 *** 信息:如果您想启用该功能,需要创建 *** 信息:具有特殊权限的新帐户(除非是类似的帐户 *** 信息:已存在)。然后使用此帐户来运行这些特殊 *** 信息:服务器。 *** 信息:请注意,创建新用户需要当前帐户 *** 信息:本身具有管理员权限。 *** 信息:找不到特权帐户。 *** 信息:该脚本计划使用“cyg_server”。 *** 信息:“cyg_server”仅供已注册的服务使用。 *** 查询:您想使用其他名称吗?(是/否)否 *** 查询:创建新的特权用户帐户“cyg_server”?(是/否)是 *** 信息:请输入新用户 cyg_server 的密码。请确保 *** 信息:此密码与您系统给出的密码规则相符。 *** 信息:不输入密码将退出配置。 *** 查询:请输入密码: *** 查询:重新输入: *** 信息:用户“cyg_server”已创建,密码为“[CENSORED]”。 *** 信息:如果您更改密码,请记住同时更改 *** 信息:已安装服务的密码(或即将使用) *** 信息:“cyg_server”帐户。 *** 信息:另请记住,用户“cyg_server”需要读取权限 *** 信息:关于以“cyg_server”身份运行的服务的所有用户相关文件。 *** 信息:特别是,对于 sshd 服务器,所有用户的 .ssh/authorized_keys *** 信息:文件必须具有适当的权限才能允许公钥 *** 信息:身份验证。为每个用户(重新)运行 ssh-user-config 将设置 *** 信息:这些权限正确。[类似限制适用于 *** 信息:例如,如果 rshd 服务器正在运行,则为 .rhosts 文件,等等]。 *** 信息:sshd 服务已安装在“cyg_server”下 *** 信息:帐户。要立即启动服务,请调用“net start sshd”或 *** 信息:`cygrunsrv -S sshd'。否则,它将自动启动 *** 信息:下次重启后。 *** 信息:主机配置完成。玩得开心! 管理员用户@ThisComputer ~ $ net start sshd CYGWIN sshd 服务正在启动。 CYGWIN sshd 服务无法启动。 服务没有报告错误。 输入 NET HELPMSG 3534 即可获得更多帮助。
请注意,在该行中*** Query: Enter the value of CYGWIN for the daemon: []
我没有输入任何内容。教程经常说在这里使用ntsec
或ntsec tty
,但这些选项已从最新版本的 OpenSSH 中删除。无论如何,我都尝试使用它们,结果是一样的。
该文件/var/log/sshd.log
是空的。如果我尝试运行该命令,/usr/sbin/sshd
我会得到输出/var/empty must be owned by root and not group or world-writable.
。/var/empty 目录具有以下权限:drwxr-xr-x+ 1 cyg_server root 0 May 29 15:28 empty
。对此错误进行 Google 搜索没有找到任何有效的修复方法。似乎有一个人使用该命令解决了这个问题chown SYSTEM /var/empty
,但这并没有解决我的情况。
答案1
尝试禁用特权分离/etc/sshd_config
答案2
在 Cygwin 下,/var/empty
必须拥有由用户运行sshd
. (除非你禁用特权分离!)
从Corinna Vinschen 于 2012 年向 Cygwin 邮件列表发送的一封有用电子邮件
通常 sshd 会测试 /var/empty 是否由 uid 0 拥有。在 Cygwin 上,通常没有 uid 为 0 的用户,代码已被修改,以测试 /var/empty 是否由运行 sshd 的用户拥有。因此,如果您在命令行上启动 sshd,则必须将 /var/empty chown 为当前用户帐户。 /etc 下的 ssh 相关文件也是如此。错误消息是 vanilla 上游错误消息。它没有针对 Cygwin 进行更改,以保持与 Cygwin 相关的上游补丁集较小。
答案3
就我而言,我与另一项服务发生了冲突。我安装了 Bitvise 试用版来尝试托管 SSH 服务器。
当我安装 Cygwin OpenSSH 时,我需要关闭 Bitvise 服务才能启动 Cygwin sshd。