Skip to main content

ssh 隧道

当我们在远程服务器中启动一些 web 服务的时候,我们很难在宿主机本地进行调试。

我们无法在宿主机中访问服务器中的服务。

但,此时可借助于 ssh 隧道,将服务器端口号映射到宿主机本地,则可以愉快地将服务器作为开发环境了。

ssh -NL

# 左侧为本地 IP:PORT,右侧为远程服务器 IP:PORT
$ ssh -L [bind_address:]port:host:hostport

先在远程服务器上随便起一个服务 npx serve . -p 8000

如果想在在本地访问,运行下面的命令

# 将远程服务器的 8000 端口供本地使用
# -N: 用以端口转发
# -L: 将服务器中 localhost:8000 映射到本地 5000 端口 (local ?)
local$ ssh -NL 5000:localhost:8000 OctoberRain

local$ curl localhost:5000

ssh -NR

# 左侧为远程服务器 IP:PORT,右侧为本地 IP:PORT
$ ssh -R [bind_address:]port:host:hostport

如何讲本地科学上网的代理转发到服务器上呢?如下:

  1. 本地处理如下
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890

ssh -NR 6666:localhost:7980 OctoberRain
  1. 服务器处理如下:
# 失败
curl https://www.google.com/
# 端口号全换成转发后的 6666
export https_proxy=http://127.0.0.1:6666 http_proxy=http://127.0.0.1:6666 all_proxy=socks5://127.0.0.1:6666
# 成功
curl https://www.google.com/