这个问题与 OpenSSH 客户端和服务器有关(最近与 Windows 操作系统捆绑在一起)。
我希望能从更了解 SSH 的人那里获得一些帮助。
我有两台笔记本电脑,都装有客户端 OpenSSH(现在是 Windows 10 的默认设置)。
还安装了 Windows 10 默认的 OpenSSH 服务器。
但是,我无法从仅有客户端的服务器 ssh 到有服务器的服务器。
虽然我可以从“客户端”笔记本电脑 ping 我的“服务器”笔记本电脑,因为这两个设备都在家里使用我的家庭网络,但是当我尝试 ssh 到我的“服务器”笔记本电脑 IP 时,出现错误:
connect to host xxxxx port 22: Connection timed out.
由于我刚开始在这些机器上使用这些功能(之前从未成功与它们建立过 ssh 连接),我不确定客户端或服务器是否有问题。但我首先查看了“服务器”笔记本电脑。
我想知道的一件事是如何找出我的 OpenSSH Server 服务正在监听哪个端口……以防万一它由于某种原因没有监听端口 22。在“控制面板”→“系统和安全”→“Windows Defender 防火墙”→“允许的应用程序”中列出了 OpenSSH Server 的防火墙规则,但没有提到端口。此外,我的 OpenSSH 服务正在运行services.msc
。
我还注意到我有一个sshd_config_default
文件,但实际上并没有sshd_config
创建文件。默认文件已被全部注释掉。
所以我想问
在哪里验证我的 OpenSSH 服务器服务是否正在监听端口 22 上的连接。
如果有人对在服务器笔记本电脑上的 sshd_config 文件中使用哪些设置命令有建议,该笔记本电脑应该由同一网络中的另一台笔记本电脑连接。我假设其中一个设置应该指定端口 2,但我不确定在默认文件中使用这些注释掉的命令是否最适合我的设置:
#Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress ::
关于连接超时的原因,还有什么其他建议吗?
答案1
以下是我的答案:
在哪里验证我的 OpenSSH 服务器服务是否正在监听端口 22 上的连接。
假设您的 ssh 在端口 22 上运行(默认),在 Windows 中运行此命令。
netstat -an|find "LISTEN"|find ":22"
关于如何配置的任何建议。
正如您所说,文件
Port 22
中的参数sshd_config
表示启动时 SSH 守护程序应打开的端口。我猜如果您未指定,则默认为该端口。由于这是 openSSH,请验证这网站以获取有关可以使用的参数的更多信息。关于连接超时的原因,还有什么其他建议吗?
如果您可以互相 ping 节点,则最常见的原因是
timeout
中间存在防火墙。
答案2
好吧,这次是真正的答案。(这将是 Manuel Florian 答案第三部分的详细版本,因为这是一个防火墙问题。- 谢谢 Manuel!)
正如我之前提到的,盒子无法 ping 通彼此的私有 IP,然后我发现两台机器都有相同的公共 IP。
为了解决这个问题,我做了两件事,我在两台机器上都执行了这两项任务):
步骤 1)我改变了我的机器,将我的家庭网络视为私人网络。
这些 PowerShell 指令来自 NiklasE rtlhm,网址为
快速且易于遵循:
- 以管理员模式打开 Windows PowerShell。开始 -> PowerShell -> 右键单击 -> 以管理员身份打开
- 获取当前配置文件。确保您已登录到要更改的网络。 获取 NetConnectionProfile
- 将列表中的网络更改为私有网络 设置NetConnectionProfile-名称“MYWIFINETWORK”-NetworkCategory Private
- 检查一切是否顺利 获取 NetConnectionProfile
我还使用以下步骤更改了防火墙设置https://kb.iu.edu/d/aopy:
- 搜索Windows防火墙,然后单击打开。
- 点击左侧的高级设置。
- 在结果窗口的左侧窗格中,单击“入站规则”。
- 在右侧窗格中,找到标题为“文件和打印机共享(Echo Request - ICMPv4-In)”的规则。
- 右键单击每个规则并选择启用规则。
.... 增加了步骤更改其中一条规则,该规则同时具有公共和私人配置文件,以应用仅有的到私人资料,因为我不想在实际公共网络上的任何人通过 ssh 访问我。
右键单击规则,选择“属性”,“高级”选项卡,在“配置文件”部分下,取消选中“公共”。
完成这些更改后,我确认可以从客户端 ping 服务器,并且能够从我的“客户端” ssh 到我的“服务器” ssh 设备。
[关于安全的附注:当然,如果有人读到这篇文章并想尝试一下,请自行承担风险,因为将网络称为“私有”意味着“我信任此网络上的其他设备 - 并且没有人入侵我的网络”。但是,如果您只执行第 2 步(不将规则限制为私有网络),则意味着当您在公共网络上时,其他设备可以 ping 您。我正在考虑在不需要时撤消这些更改,也可能会在不需要时禁用两台机器上的 SSH。]
我必须等到我的个人资料能够与 user987957 合并后才能将任何内容标记为答案。不过,感谢大家提供的线索,帮助我研究这个问题!