我已经在 Windows 10 服务器上卸载了 OpenSSH 客户端和服务器,然后重新安装了它们。
现在它有了OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
,比以前的版本稍高一些(我认为它有 OpenSSH_for_Windows_8.0p1)。
但是,现在我无法在我的 MacBook 上使用 SSH 连接到该 Windows 服务器。
(base) xxx@yyy ~ % ssh uid@aaa-bbb
ssh: connect to host aaa-bbb port 22: Operation timed out
(base) xxx@yyy ~ % ping uid@aaa-bbb
ping: cannot resolve uid@aaa-bbb: Unknown host
我可以在我的 MacBook 上 SSH 到其他服务器;我也可以在这台 Windows 10 服务器上 ssh 到另一台服务器。
OpenSSH_9.0p1, LibreSSL 3.3.6
这是因为我的 MacBook ( ) 和 Windows 服务器 ( OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
)之间存在 OpenSSH 版本不兼容问题吗?
更重要的是,我该如何解决这个问题?
答案1
验证 OpenSSH 服务器 (sshd) 服务是否已启动:
Get-Service -Name ssh*
如果 sshd 服务尚未启动,请启动它:
net start sshd
更多详情请点击这里:
- https://github.com/powershell/win32-openssh/wiki
- https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration
问题摘要:OP 的原始问题指出他们无法 ping Windows 10 SSH 服务器,但他们在末尾尝试使用 @username 符号,因此 ping 失败。他们 ping 后,只有主机名/计算机名称 ping 工作正常。然后他们收到“连接被拒绝”的消息(不确定是在防火墙禁用之后还是之前,因此他们可能仍需要进行防火墙例外,1),这意味着 SSH 服务器正在响应,但拒绝。结果发现 SSH 服务器守护进程(在这种情况下是 Windows 服务)未启动,最终解决了该问题。
答案2
打开 Windows 任务管理器并验证 sshd.exe 进程是否正在运行。如果没有,则其配置文件可能有问题。检查错误日志。
打开 cmd 并输入
netstat -ano | find "22"
。检查服务器确实在监听端口 22。检查 PID(最右边的列)并使用任务管理器验证它确实是 sshd.exe 进程。通过 IP 地址而不是主机名连接到服务器以排除可能的 DNS 问题。
暂时禁用 Windows 防火墙。如果您能够连接,则需要编辑或添加允许 SSH 连接的规则,因为永久关闭防火墙会带来安全风险。
如果其他方法都不起作用,请尝试使用 Putty 进行连接(可以从 brew 或 MacPorts 获得 Mac 版本)以检查是否确实存在兼容性问题 - 但我对此表示严重怀疑。
答案3
如果您无法 ping 通,我会先检查您的 dns(假设您已尝试按照 harrymc 的建议正确 ping 通)。
您是否知道所连接的服务器的 IP 地址,如果您可以直接 ping IP 但不能 ping 名称,则检查内容/etc/resolv.conf
(我相信这对于 Mac 来说是正确的,如果不正确,我相信有人会纠正)
您也可以尝试安装 bind 然后brew install bind
运行
使用默认名称服务器
dig aaa-bbb
如果服务器使用公共域,则:
dig aaa-bbb @8.8.8.8
或者
dig aaa-bbb @4.2.2.4
8.8.8.8和4.2.2.4是公共DNS服务器。
如果它不是公共域,请将其替换@8.8.8.8
为您的内部 DNS 服务器之一。
作为最后的手段,如果您可以 ping IP,但不能 ping 名称,请/etc/hosts
使用名称和 IP 进行编辑。
echo <ip address of server> aaa-bbb >> /etc/hosts