如果有一台一直运行公网服务器 `host_public` 的话, 可以这么弄
把一台内网服务器的 `ssh 端口` 映射到 `host_public` 的本地端口上, 称为 `jump_host`
```sh
ssh -NT -R 127.0.0.1:233:127.0.0.1:22 public_host
# -NT 表示只做转发
# -R 233:127.0.0.1:22 表示本地的 22 端口转发到公网服务器的 127.0.0.1:233 端口
# 这个进程用进程管理工具保证运行
```
ssh config 配置如下
```config
Host host_public
HostName ip_of_host_public
Host jump_host
HostName 127.0.0.1
Port 233
ProxyCommand ssh -W %h:%p host_public
# local_* 表示以 local_ 开头定义的 host 通过 jump_host 去连接
Host local_*
ProxyCommand ssh -W %h:%p jump_host
Host local_docker_manger
HostName 192.168.100.32
```
ssh 连接内网服务器中的 `docker_manager` 主机
```sh
ssh local_docker_manger
```
ssh 使用 socks5 代理访问内网应用
```sh
ssh -NT -D 1080 local_docker_manger
```
参考链接:
-
https://cherrot.com/tech/2017/01/08/ssh-tunneling-practice.html-
https://jin-yang.github.io/post/ssh-proxy.htmlv2 的回复不支持 markdown, 更友好的格式看这里:
https://gist.github.com/shynome/d1a6bf5c68b4504c21e4ae83add97eda