vscode ssh连接自动断开怎么解决 -- 设置心跳包并验证

一、INTRO

大学毕业了,新换了MacBook,旧的笔记本不要扔(裹上面包糠),我装一个Ubuntu以提供一个 地道 的linux开发环境。当我在 Mac 中使用 vscode ssh 功能连接到 linux 中时,我发现了一个问题。每次早上起来(或者inactive一段时间之后)ssh会自动断掉 ,重新连接还要点好几次,略微烦人。于是我想找一个方法让ssh不要断掉,就有了这篇文章。

先说结论,在ssh配置文件中添加心跳的配置即可。文档在这里,或者在stackoverflow上搜索how to keep ssh alive

好,下面是边边角角可以不用看

二、问题

Q1: 如何验证心跳包被正确的发送了呢?

A1: 我认为有以下几种思路

  1. 查看 ssh 日志,vscode 中可以设置 ssh 的 log level,设置为 debug 即可。(未验证成功,因为没有看到心跳包发送的日志)
  2. 通过抓包来查看是否有类似心跳包的数据被发送了

Q2: 如何在 macos 下抓包呢?

A2: 我认为可以通过 tcpdump 的方式进行抓包。因为我设置了DHCP静态ip,所以可以根据目标ip和端口号针对某一网卡(即网络接口)进行抓包命令如下:

zsh 复制代码
sudo tcpdump -i en0 host 192.168.31.71 and port 22

Q3: 抓包的目标ip和端口很容易知道,那么使用哪一个网络接口呢,ifconfig列出的网络接口实在是太多了?

A3: Unix-like机器中编程时会使用 socket 建立 tcp 连接,而此时并不需要我们指定网络接口,这就意味着在 socket 底层一定有一个机制用于选择将包发送到哪一个接口,没错就是路由表。思路清晰,查看路由表即可找到我们要 tcpdump 的目标网络接口。macos 中查询路由表的命令是

zsh 复制代码
netstat -nr

三、结论

也就是说,我们现在能够使用 tcpdump 抓包了,我尝试了一下发现问题好像有点不对劲儿:并不是像我想象的一样每一分钟一个心跳包,而是有很多看起来像干扰项一样的包。这个问题以后再来探究吧~

相关推荐
特别关注外国供应商2 天前
SSH PrivX™ OT 案例 - 某船舶运营商为数千艘船舶实现了远程访问,用于诊断、维护和物联网数据采集
物联网·ssh·数据采集·ad·远程访问·多因素身份验证·privx
仙俊红2 天前
关于ssh免密登录
运维·ssh
特别关注外国供应商2 天前
SSH 的 PrivX OT 工业安全远程访问 (ISRA) 被 分析机构 Industrial Cyber 认可
人工智能·网络安全·ssh·特权访问管理·工业安全远程访问·privx·ot 访问安全
wd5i8kA8i2 天前
自研多线程 SSH 极速文件传输助手(附 GitHub 源码)
运维·ssh·github
DoUfp0bgq3 天前
解决RDK X5(ARM64架构)板卡Remote-SSH运行Antigravity AI崩溃(SIGILL):Samba网络盘本地挂载方案
人工智能·架构·ssh
程序猿编码3 天前
eBPF代理:让SSH进程“溯源”,找到背后的客户端IP
linux·tcp/ip·ssh·ebpf
Learn-Share_HY3 天前
[IT Network]如何在cisco packet tracer建立ssh的連線?
ubuntu·ssh·switch·cisco·networking·packettracer·networktutorial
数据知道3 天前
claw-code 源码详细分析:Remote / SSH / Teleport / Deep Link——运行时分支爆炸怎样用「模拟模式」先收束状态机?
运维·ai·ssh·claude code
hello_fengfeng3 天前
VSCode Remote-SSH 连接失败修复(权限问题)
ide·vscode·ssh
m0_738120723 天前
网络安全编程——如何用Python实现SSH 服务端和SSH 反向 Shell(突破内网)
python·web安全·ssh