虽然我可以从客户端连接到服务器(提示输入登录信息),但在另一个服务器上却openssh <servername>
出现“ ”。ssh: connect to host <servername> port 22: Connection refused
我不是 UNIX 专家(因此:对这个问题中所有错误或缺失的术语表示抱歉),我使用 unison 来同步文件系统分支。unison 通过 ssh 使用 ssl 隧道。这就是为什么我在服务器 (XP) 和客户端上运行 copssh(以拥有一个好的 ssh 客户端)。
发生故障的机器是全新安装的 copssh。所有机器都运行 XP。我尝试关闭所有本地防火墙,并查看了 openssl 和 ssh 配置文件,但完全找不到原因。我甚至找不到有用的日志或其他东西。服务器上 Windows 的事件协议在失败的连接过程中不包含任何条目。
我该如何诊断这个问题?我确实想解决这个问题。
LAN 使用的是 N300 无线路由器型号 WNR2000v2。“故障”客户端位于有线 LAN 上,正常工作的客户端位于无线 LAN 上。但是,如果我将正常工作的客户端带入有线 LAN(我已检查过这一点),它仍然可以正常工作。任何地方都没有端口 22 阻止规则。
我浏览了所有相关问题,但除了涵盖我已经验证过的可能原因的答案外,没有发现任何真正可比较的内容。
答案1
连接被拒绝通常意味着两种情况。要么是防火墙阻止了连接(可能是路径上的网络防火墙或主机防火墙),要么是你尝试连接的主机上的端口未打开。
根据你的说法,没有防火墙,所以你应该首先检查主机上的端口是否真的打开。执行netstat -n -p tcp
并检查 ssh 端口是否正在监听。你应该看到如下一行:
TCP 0.0.0.0:22 0.0.0.0:0 LISTENING 2518
如果没有,则意味着由于某种原因,SSH 服务尚未启动,您应该检查 copssh 的日志。日志可能不在事件查看器中,您还应该检查程序的目录。
如果您确实看到 SSH 端口正在监听,则说明有东西在阻止您。您应该运行 Wireshark 并检查预期流量是否到达您的主机,并尝试找出路径上被阻止的位置。
答案2
我找到了。
这并不是说我有机会,因为这显然没有记录在任何地方,但是通过验证我的整个 IP 设置,我发现我的故障客户端的主机文件(在 Windows\System32\drivers\etc 下)中有一个旧条目。这导致服务器的实际 IP 与 DNS 报告的 IP 不同,并且 CheckHostIP 被设置为 YES(当然)。
由于几个月前机器已经移至 DHCP LAN(!其他一切都太容易了),所以不需要(也不允许)固定 IP 主机文件。放下它--起作用了。
该死!
抱歉问了这个问题。即使这不是解决方案,也感谢您的回答。(如果我遵循数据包嗅探分析建议,我也会找到它。这就是我接受 AntiFubar 答案而不是我自己的答案的原因。)