最近出于一些需要,需要使用到端口转发,在此做点记录。本人使用端口转发主要有两个目的:内网穿透和服务器代理。

内网穿透

因为有时候在外面需要访问一下电脑,但是花生壳什么的太折腾了(又或许是我懒),既然 SSH 命令就能解决的事情,我就不想再去配置什么花生壳了。
首先,我们要有一台有公网 IP 的服务器,比如我使用一台阿里云的服务器来作为示例。只要两条命令即可实现。在我的电脑上执行以下命令,这条命令的意思是将本地的 22 端口转发到我的阿里云服务器 (temp@39.108.XXX.XXX) 的 7788 端口上。为什么是 22 端口?因为 SSH 默认是 22 端口连接。

ssh -fNTR 7788:localhost:22 temp@39.108.XXX.XXX

接着使用 SSH 连接阿里云服务器

ssh temp@39.108.XXX.XXX

在阿里云服务器上使用 SSH 连接本地的 7788 端口,请注意此处的 james,这个用户名是我 MacBook 的用户名,而不是阿里云服务器的用户名。

ssh -p 7788 james@localhost

截屏2020-07-21 下午10.53.54
截屏2020-07-21 下午10.53.54

完善配置

每次连接到服务器之后都要输入:ssh -p 7788 james@localhost 看起来有点麻烦,那么我们可以稍微配置一下 SSH 让他变地简单。只要在 SSH 的配置文件添加 MacBook 的相关信息即可。使用 vim 编辑 SSH 配置文件:

vim ~/.ssh/config

按下字母 i 进行编辑,黏贴以下的配置信息,User 改为你本地电脑的用户名,端口可以像我一样使用 7788 端口或者选择一个你觉得顺眼的。在英文输入法下按:「ESC → 冒号 → wq → 回车」 保存编辑好的配置。

Host mac
  User james
  Port 7788
  HostName localhost

配置好之后,以后每次需要在外面访问家里的电脑登录阿里云服务器之后只要输入:ssh mac 即可登录。

截屏2020-07-21 下午10.55.42
截屏2020-07-21 下午10.55.42

服务器代理

使用国内的服务器有一个痛点:访问 GitHub 速度特别慢,原因大家懂的自然懂。我身边一些朋友的解决方法是:先把要下载的东西下载到本地机器上,然后再 scp 给阿里云服务器。但是这样做我个人觉得太麻烦了。他们可以忍,我不能忍。于是乎我们可以如法炮制,給服务器加上代理。
首先,我的电脑上运行着 Surge,开放着 8888 的 HTTP/HTTPS 连接端口,我们要做的就是把本机的 8888 端口转发給阿里云服务器。我这里演示转发給服务器的 9150 端口,命令如下:

ssh -fNTR 9150:localhost:8888 temp@39.108.XXX.XXX

接着使用 SSH 连接阿里云服务器

ssh temp@39.108.XXX.XXX

最后一步,在阿里云服务器上设置代理

export https_proxy=http://127.0.0.1:9150;export http_proxy=http://127.0.0.1:9150

如何验证是否设置成功?测一下 IP 地址就知道了,可以看到返回的地址是日本东京,代理设置完成,接下来就可以愉快地 git clone 或者 apt install 了。当然你也可以把上面这句加入 shell 的配置文件,不用每次连接服务器之后都输入一次。

$ curl ipinfo.io
{
  "ip": "172.104.123.68",
  "hostname": "li1733-68.members.linode.com",
  "city": "Tokyo",
  "region": "Tokyo",
  "country": "JP",
  "loc": "35.6137,139.7271",
  "org": "AS63949 Linode, LLC",
  "postal": "141-0033",
  "timezone": "Asia/Tokyo",
  "readme": "https://ipinfo.io/missingauth"
}

截屏2020-07-21 下午10.56.49
截屏2020-07-21 下午10.56.49

来 git clone 一个项目试试看,速度比之前几 KB十几KB 好多了。

未命名
未命名