我正在尝试构建一个 Windows 批处理文件,它以端口转发启动 putty/plink,仅此而已。到目前为止,Windows 部分已准备就绪:
start plink.exe -ssh -i key.ppk -L 1234:localhost:80 sampleUser@192.168.0.1
Run Code Online (Sandbox Code Playgroud)
因为我不希望允许执行身份验证之后其他命令,我使用ForceCommand了Match User声明:
Match User sampleUser
ForceCommand echo 'Success! Close this window to log out.'
Run Code Online (Sandbox Code Playgroud)
问题是,运行我的批处理文件会正确启动 putty,但在执行回显我指定的文本后它会立即关闭。
我的想法是使用这样的东西:
ForceCommand echo 'Success! Close this window to log out.' && waitTillControlC
Run Code Online (Sandbox Code Playgroud)
这样,putty/SSH 应该保持连接有效并且不会退出我的端口转发。
我想过像yes, pingor 之类的命令read,但它们
是否有一个命令永远不会做任何事情,直到有人用 Ctrl+C 终止它或通过关闭腻子窗口来关闭 SSH 连接?
我应该用来做waitTillControlC什么?
在过去的几个月里,我一直在与定期的互联网中断作斗争,这影响了我本地网络上的所有设备,迫使我重新启动电缆调制解调器。今天我注意到,通过安装暴雪 Battle.net 游戏,我可以重现此问题 - 或具有相同症状的类似问题。
这不仅仅是为了让我的带宽饱和,因为
为了准确地查看我的互联网连接何时失败,我ping 8.8.8.8在连接到同一网络的单独 Linux 笔记本(我使用的是 Arch btw)上运行一个简单的程序 - 但即使我的互联网失败,我仍然能够继续执行 ping 操作!仅当停止正在运行的ping并重新启动它时,我才不再收到任何响应。
我对这种行为有点困惑。我还尝试并排运行ping 8.8.8.8-watch -n1 ping -c 1 8.8.8.8虽然持续运行的ping进程继续工作,但一旦我的互联网出现故障,由watch定期重新启动的ping进程就会失败。
这怎么可能?显然,“活动 ping 会话”似乎不受我的中断影响。但是对于在第 3 层使用 ICMP 执行 ping 操作,我不明白为什么保持ping运行与重新启动之间存在差异。
在看到 Battle.net 下载也导致这个问题后,我立即怀疑与太多 P2P 连接堵塞我的路由器有关。但我既不确定 Battle.net 是否真的使用 P2P,也没有在我的路由器上看到任何关于活动连接(最多 15,360 个连接中的约 3,000 到 4,000 个连接)、内存使用等方面的可疑内容。
不幸的是,我无法真正查看电缆调制解调器的指标,因为我的 ISP 没有提供适当的接口 - 这也是我在桥接模式下运行它的原因。
这种行为有什么解释吗?
编辑:我使用 Wireshark 查看了 ICMP 消息:获得响应的 ICMP 回显请求与未获得响应的 ICMP …