上篇博客我们已经建立起了ssh服务,但是这仅仅支持局域网连接,无法支持从外部网络访问,本章我们就来解决这个问题。
这里我们借助工具cpolar内网穿透来实现,无需公网IP,也不用设置路由器,操作简单。(前情提要:对于需要长期连接的用户,需要消费升级至专业版)
cpolar官网:https://www.cpolar.com/
1. ubuntu安装cpolar内网穿透
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- 查看版本号,正常显示即为安装成功
cpolar version
token认证
注册登录cpolar官网,注册登录完成之后点击左侧的验证按钮,然后复制token
在终端运行如下命令:
cpolar authtoken {你所复制的token}
- 穿透测试
cpolar http 8080
如下图所示有公网生成地址则说明穿透成功
- 向系统添加服务
sudo systemctl enable cpolar
- 启动cpolar服务
sudo systemctl start cpolar
- 查看服务状态,如下图显示active则为启动状态
sudo systemctl status cpolar
- cpolar安装并配置完成后,在浏览器上访问本地9200端口,使用cpolar邮箱账号登录cpolar web UI管理界面,登录完成的页面如下所示
cpolar安装成功后,默认会安装2条样例隧道,可以自行编辑或者删减:
- ssh隧道:指向本地22端口,TCP协议
- website隧道:指向本地8080端口,HTTP协议
2. 创建隧道映射
我们可以直接使用样例隧道ssh,或者重新创建一个隧道,使用tcp协议,指向22端口。点击左侧仪表盘的隧道管理——创建隧道
- 隧道名称:可自定义,注意不要重复
- 协议:tcp
- 本地地址:22
- 端口类型:随机临时TCP端口
- 地区:China vip
隧道创建成功后,点击左侧的状态——在线隧道列表,可以看到,刚刚创建的隧道已经有生成了相应的公网地址,将其复制下来
3. 测试公网连接
在windows上打开vscode,使用所复制的公网地址来远程SSH。
具体连接命令为 ssh username@6.tcp.vip.cpolar.cn -p 12864
其中username为目标主机的用户名,12864为穿透的端口号,一定不能漏掉
这样基本就连接完成了
4. 配置固定TCP端口地址
由于以上所创建的隧道选择的是随机临时TCP端口,所生成的公网地址会在24小时内随机变化,对于需要长期远程的用户来讲不方便。不过我们可以为其配置固定的地址进行远程连接,后续远程无需先查看随机公网地址再进行远程。
注意:配置固定TCP端口地址功能需要升级至专业版套餐或以上才支持。
打开cpolar官网,登录到官网后台cpolar - secure introspectable tunnels to localhost,点击左侧的预留,我们来保留一个固定TCP端口地址:
- 地区:选择china
- 描述:即备注,可自定义
地址保留成功后,系统会生成相应的固定公网地址,将其复制下来
在ubuntu系统上打开浏览器访问本地9200端口,登录cpolar web UI管理界面。点击左侧的隧道管理——隧道列表,找到ssh隧道,点击右侧的编辑,我们来修改隧道信息,将固定tcp端口地址配置到隧道中
隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,找到SSH隧道,可以看到公网地址已经更新成为了固定tcp地址。
然后将改地址复制下来,用打开windows中的vscode,通过ssh username@6.tcp.vip.cpolar.cn -p 12864 这种形式的命令进行连接即可