通过 ssh 代理连接 ssh 服务器

Linux

一大早赶去上第一节课, 想起好像很久都没有升级过手机上的 LineageOS 了, 可以刷一波。 于是拿起手机打开 Termux, 像往常一样 ssh 回寝室电脑, 输入 systemctl start openvpn-client@cqupt.service, 按下回车输入密码, 连上教育网准备更新 aosp 镜像和 linea……

喵喵喵? 怎么 ssh 突然卡死了?

原因

还以为自己断网了。

半天才反应过来是 OpenVPN 加了一条 0.0.0.0/1 的路由, 把几乎所有流量转发到了 OpenVPN Server, 当然也包括到我手机 IP 的流量, ssh 自然也就断了。

那还能怎么办呢?

想起寝室里还有个路由器是不受电脑上运行的 OpenVPN 影响的。 然后电脑上还有一个对路由器以及路由器子网的路由, 所以估计能从路由器连回去。

试了试 ssh route, 果然连上了路由器, 也能从路由器 ping 通电脑。 但是路由器上并没有连上电脑所需的私钥, 还得想想办法才能连上去。

解决

ssh 本身也有代理功能, 先使用 ssh 建立一个到寝室路由器的 socks5 代理。

ssh -N -D 127.0.0.1:23333 route

打开另一个终端, ssh 虽然不直接提供通过代理连接的命令行选项。 但可以在 -o 选项中指定 ProxyCommand, 指定一个支持代理的软件进行连接, nc 就是个不错的选择。

然后就可以通过刚刚建立的 socks5 代理连回寝室电脑了!

ssh dorm -o "ProxyCommand nc --proxy 127.0.0.1:23333 --proxy-type socks5 %h %p"

又看到了熟悉的 prompt, 长舒一口气……

然后呢?

当然是给自己加条路由啦 😂。

Post Directory

文章目录

  1. 原因
  2. 解决
  3. 然后呢?