分类

ssh 端口转发

2020-03-31 19:42 linux

有时需要临时在本地访问一下服务器上的未公开访问权限的服务,可以用 ssh 将此服务的 端口重映射到本地。使用起来也很简单,比如之前常用的 X11Forward 类似实现的。

下面以访问服务器的 127.0.0.1:8080 web 服务为例说明:

ssh -p 22 -v -N -L 0.0.0.0:8080:127.0.0.1:8080 user@example.com

以上命令即可将服务器上 8080 端口的服务映射到本地网络。其中各个参数的意义是:

  • -p 22 为服务器上的 sshd 服务的端口号,默认是22,可以略去这个选项
  • -v 交互式模式,会打印一些日志到终端里;可以略去
  • -N 表示不在服务器端执行命令,这样就不会打开服务器上的远程终端;可以略去
  • -L 0.0.0.0:8080:127.0.0.1:8080 将服务器上的 8080 映射到本地的 8080 端口
  • user@example.comssh 服务的用户名及服务器地址

之后就可以在本机浏览器里面访问 http://127.0.0.1:8080 地址了。

Socks5 反向代理

也可以将本地的网络数据经 ssh 转发到服务器上,然后经服务器发送出去。简单来说 就是使用 ssh 创建 socks5 反向代理,这里其实 ssh 就相当于一个 socks server。 这种情况可以应急使用,网络速度无法跟专门的代理工具相比。

在本地终端里运行以下命令,就可以在本地创建 127.0.0.1:1080 的 socks5 代理:

ssh -p 22 -N -v -D localhost:1080 user@example.com

这里的 -D 选项用于指定本地要绑定的端口号以及地址。