我在Windows 7上安装了Cygwin和sshd,但是我无法使其工作。
我遵循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.
configuration细节:
netstat -a -b报告没有运行在端口22上 C:\cygwin\var\log\sshd.log是空的 ssh-host-config -y 更新:Windows日志抱怨Possible duplicate cygwin1.dll
谢谢,你的更新是解决scheme – 对于那里的其他人,在Cygwin启动时有一个针对Win32错误1062的配方#3:
1)检查应用程序事件日志,看看是否有“信息”级别的事件,如:“sshd:PID:可能重复cygwin1.dll:”
在指定的位置find这个愚蠢的重复,并重命名它或以某种方式摆脱它的path。 我在“/ cygdrive / c / Program Files(x86)/socat-1.7.2.0/cygwin1.dll”。
Boo,socat! 显然他们搞了3PP 。 甚至不知道socat是在我的系统上,显然它是作为其他安装的一部分。 我在cygwin邮件列表中发现了另外两个人遭受了重复的dll问题。
谢谢@HopelessN00b , @user155148 , @user155148你的解决scheme的组合让我走了。
我有两个问题:
cygwin1.dll文件。 /var/log/sshd.log :“特权分离用户sshd不存在” 处理血腥重复的泡菜文件:
cd /cygdrive/c/Program\ Files\ \(x86\)/cwRsync/bin mv cygwin1.dll cygwin1_.dll
通过编辑/etc/passwd添加一个用户并添加以下行:
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
请注意,用户名'sshd'来自/var/log/sshd.log 。
GAD在这个屁股上有多痛苦!
我确实find了另外一个资源,这个来自Oracle的详细信息
简而言之,如果你有greif:
cygrunsrv -S sshd /var/log/sshd.log /etc/passwd probs吗? 我有(几乎)相同的效果和类似的解决scheme:应用程序日志显示重复的文件
可能重复的cygwin1.dll:/cygdrive/c/dakota/bin/cygwin1.dll ..
从我的达科他安装。 重命名这个DLL有窍门。 谢谢!
我有一些特权分离的问题。 在这种情况下,添加一行到/etc/passwd文件解决了这个问题。
sshd:x:74:74:特权分隔的SSH:/ var / empty / sshd:/ sbin / nologin
对我来说,这是一个兼容性问题。 我试图在Win7中运行它。 通过右键单击资源pipe理器中的文件修复,兼容性和兼容性设置为Windows Server 2003.之后工作正常。
在这里find解决scheme:
请注意,我的问题是专门尝试启动OpenSSH服务器,它使用Cygwin的轻型版本我猜。
/ etc / passwd响应非常接近,但UID 74是特定于其安装的。
而是使用这个cygwin命令来获取正确的UID。
mkpasswd -l -u sshd >> / etc / passwd
这似乎是由sshd服务器的任何错误引起的 – 在我的情况下,它在/etc/ssh_host_rsa_key perm上出现 – 应该是0600.在/var/log/sshd查找类似。
在客户端系统上,我发现了一个名为RDPlus(www.rdplus.com.au)的程序,在端口22上运行SSH隧道选项,我必须在Cygwin sshd启动之前禁用它。 在CMD.EXE中,在应用程序事件日志中find'绑定到端口22上的0.0.0.0失败'错误后,'netstat -abo'指向此进程。 'o'选项将显示可以在任务pipe理器中find的PID。
要禁用此function,请运行RDPluspipe理工具,转到Web选项卡并禁用SSH隧道。
有人在另一个Stack Exchange问题上发布了这个问题,但是如果你在/var/log/sshd有一个空的文件,你应该试试/usr/sbin/sshd 。 这将输出你没有在日志中得到的错误。
对我来说,取消执行sshd服务,重新启动然后重新运行ssh-host-config,同时遵循这些指示,帮助( ls -l /var/etc告诉我,在我的第一次尝试中,空文件夹由SYSTEM拥有,这是有道理的,因为我之前跟着这个教程,但是这样,我得到了一个“/ var / empty必须由root拥有,而不是组或世界可写的”错误)。
我正在使用包含cygwin1.dll Cntlm (NTLM身份validation代理),避免这种重复解决了这个问题。
我使用本地帐户cyg_server来运行sshd。 我需要将/ var / empty的权限设置为700,将所有者设置为cyg_server,尽pipe错误消息表示所有者必须是root用户。
我也删除了当天的消息(/ etc / motd),但是我不认为这是绝对必要的。 它有时妨碍我的自动化。
FWIW,cyg_server是严格的本地用户,具有pipe理员权限,没有Active Directory定义。 它在registry和/ etc / passwd中列出。
接受Cygwin最新更新后,我还必须编辑cyg_server的权限。
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$