谷歌搜索了好久,还是没能解决。我无法从另一台机器连接到我的 CYGWIN sshd。Netstat 显示连接已建立。可以本地连接,没问题。
[oracle@aserver ~]$ ssh myid@mycomp
ssh: connect to host mycomp port 22: Connection refused
在 mycomp 上:
$ netstat -a | grep ssh
TCP MYCOMP:ssh MYCOMP.mydomain.com:0 LISTENING
TCP MYCOMP:1161 aserver.mydomain.com:ssh ESTABLISHED
从本地主机成功登录:
$ ssh myid@mycomp
myid@mycomp's password:
Last login: Tue Sep 14 14:27:30 2010 from mycomp.mydomain.com
Fanfare!!!
You are successfully logged in to this server!!!
我使用的是 XP sp3,今天更新了 CYGWIN。尝试过清理和重新配置,但没有用。
清理(感谢 Herb Maeder)http://www.cygwin.com/ml/cygwin/2008-10/msg00370.html):
# Remove sshd service
cygrunsrv --stop sshd
cygrunsrv --remove sshd
# Delete any sshd or related users (such as cyg_server) from /etc/passwd
# (use your favorite editor)
# Delete any sshd or relaged users (such as cyg_server) from the system
net user sshd /delete
配置:
$ ssh-host-config -y
*** Query: Overwrite existing /etc/ssh_config file? (yes/no) yes
*** Info: Creating default /etc/ssh_config file
*** Query: Overwrite existing /etc/sshd_config file? (yes/no) yes
*** Info: Creating default /etc/sshd_config file
*** Info: Privilege separation is set to yes by default since OpenSSH 3.3.
*** Info: However, this requires a non-privileged account called 'sshd'.
*** Info: For more info on privilege separation read /usr/share/doc/openssh/README.privsep.
*** Query: Should privilege separation be used? (yes/no) yes
*** Info: Note that creating a new user requires that the current account have
*** Info: Administrator privileges. Should this script attempt to create a
*** Query: new local account 'sshd'? (yes/no) yes
*** Info: Updating /etc/sshd_config file
*** Query: Overwrite existing /etc/inetd.d/sshd-inetd file? (yes/no) yes
*** Info: Creating default /etc/inetd.d/sshd-inetd file
*** Info: Updated /etc/inetd.d/sshd-inetd
*** Warning: The following functions require administrator privileges!
*** Query: Do you want to install sshd as a service?
*** Query: (Say "no" if it is already installed as a service) (yes/no) yes
*** Query: Enter the value of CYGWIN for the daemon: []
*** Info: The sshd service has been installed under the LocalSystem
*** Info: account (also known as SYSTEM). To start the service now, call
*** Info: `net start sshd' or `cygrunsrv -S sshd'. Otherwise, it
*** Info: will start automatically after the next reboot.
*** Info: Host configuration finished. Have fun!
myid@MYCOMP /cygdrive/c/Documents and Settings/myid
$ cygrunsrv -S sshd
myid@MYCOMP /cygdrive/c/Documents and Settings/myid
$ cygrunsrv -Q sshd
Service : sshd
Display name : CYGWIN sshd
Current State : Running
Controls Accepted : Stop
Command : /usr/sbin/sshd -D
答案1
您能从另一台计算机 telnet 到端口 22 吗?
telnet <mycomp> 22
如果您的连接被拒绝(并且您可以通过 localhost 连接),这肯定是防火墙问题。除了 Windows 防火墙之外,还有其他防火墙 - McAfee、ZoneAlarm 等,听起来您被阻止了 - 因为您可以从内部访问它(表明它在正确的端口上监听),但您无法从外部访问它(表明外部端口已关闭)。
出奇,Mozilla 在配置防火墙方面做得很好——包括 Windows 防火墙。试试看。您认为没有防火墙在运行,但这并不意味着防火墙不存在。
答案2
Windows 防火墙是否可能正在运行?
您是否以详细模式或调试模式运行 SSH 客户端?
答案3
我已经处理这个问题几个星期了。它可能不直接适用于这种情况。但我将在这里分享我的经验,希望它能对某些人有所帮助。
Cygwin SSHD 正在我的 Windows 7 Home Premium Box 上运行。
- 我能够从本地主机或通过输入我的 IP 地址来 ssh 进入机器。我尝试过,在 Putty 中成功了。
- 我无法从 LAN 上的任何其他设备通过 ssh 进入该机器。
- 我确认这不是防火墙、防病毒软件或安全问题。我使用 apache portable 在端口 22 上对此进行了测试。我能够在端口 22 上访问它。我还确保 sshd.exe 具有在网络上进行通信的全部能力。
- 我关闭了机器上的所有防火墙功能。只有 Windows Defender 和 Windows 防火墙。这并没有解决问题
- 经过一番挖掘,我发现问题出在 Putty 本身。出于某种原因,我能够使用来自 Linux 服务器(在云端)的 OpenSSH 客户端,没有任何问题。我认为这与 Putty 密钥有关。
- 我运行了 putty.exe -cleanup 但问题仍然存在。
- 在我的一台 Linux 服务器上,我收到此 ssh_exchange_identification:远程主机关闭连接
- 在我的另一台 Linux 服务器上,它刚刚连接。
希望这可以帮助。
德文郡
--编辑-- 好吧。事情开始变得更加奇怪了。我有 4 台云服务器,每台都绑定到不同的域。一台服务器可以登录我的 sshd,而其他服务器则不能。
我通过注释掉 hosts.deny 中的所有条目解决了这个问题。我还调整了 hosts.allow 文件,使其看起来像这样。
ALL : localhost 127.0.0.1/32 [::1]/128 [::ffff:127.0.0.1]/128 : allow
SSHD : ALL
这帮我解决了这个问题。
答案4
我遇到了同样的错误,发现我的 sshd 没有运行。因此,使用启动 sshd net start sshd
,它可能会为你工作。