CYGWIN sshd“端口 22:连接被拒绝”

CYGWIN sshd“端口 22:连接被拒绝”

谷歌搜索了好久,还是没能解决。我无法从另一台机器连接到我的 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,它可能会为你工作。

相关内容