# 介绍下最近比较实用的端口转发 | Nicksxs's Blog
vscode 扩展转发在日常使用云服务器的时候，如果要访问上面自建的 mysql，一般要不直接开对应的端口，然后需要对本地 ip 进行授权，但是这个方案会有比较多的限制，比如本地 ip 变了，比如是非固定出口 ip 的家用宽带，或者要在家里跟公司都要访问，如果对所有 ip 都授权的话会不安全，这个时候其实是用 ssh 端口转发是个比较安全方便的方式。原来在这个之前其实对这块内容不太了解，后面是听朋

# Nicksxs's Blog

What hurts more, the pain of hard work or the pain of regret?

0%

# 介绍下最近比较实用的端口转发

发表于 2021-11-14 分类于 ssh ， 技巧 阅读次数： 阅读次数： Disqus：

### vscode 扩展转发

在日常使用云服务器的时候，如果要访问上面自建的 mysql，一般要不直接开对应的端口，然后需要对本地 ip 进行授权，但是这个方案会有比较多的限制，比如本地 ip 变了，比如是非固定出口 ip 的家用宽带，或者要在家里跟公司都要访问，如果对所有 ip 都授权的话会不安全，这个时候其实是用 ssh 端口转发是个比较安全方便的方式。
原来在这个之前其实对这块内容不太了解，后面是听朋友说的，vscode 的 `Remote - SSH` 扩展可以很方便的使用端口转发，在使用该扩展的时候，会在控制台位置里都出现一个”端口” tab
如图中所示，我就是将一个服务器上的 mysql 的 3306 端口转发到本地的 3307 端口，至于为什么不用 3306 是因为本地我也有个 mysql 已经使用了 3306 端口，这个方法是使用的 vscode 的这个扩展，

### ssh 命令转发

还有个方式是直接使用 ssh 命令
命令可以如此

    ssh -CfNg -L 3307:127.0.0.1:3306 user1@199.199.199.199

简单介绍下这个命令
`-C` 表示的是压缩数据包
`-f` 表示后台执行命令
`-N` 是表示不执行具体命令只用于端口转发
`-g` 表示允许远程主机连接本地转发端口
`-L` 则是具体端口转发的映射配置
上面的命令就是将远程主机的 127.0.0.1:3306 对应转发到本地 3307
而后面的用户则就是登录主机的用户名`user1`和ip地址`199.199.199.199`，当然这个配置也不是唯一的

### ssh config 配置转发

还可以在ssh 的 config 配置中加对应的配置

    Host host1
      HostName 199.199.199.199
      User user1
      IdentityFile  /Users/user1/.ssh/id_rsa
      ServerAliveInterval 60
      LocalForward 3310 127.0.0.1:3306

然后通过 ssh host1 连接服务器的时候就能顺带做端口转发