同一个局域网内远程ssh连接服务器,只需要知道服务器的IP地址就可以实现连接。但是在不同的局域网下,我们想要通过外网远程连接服务器(应用场景:在家远程连接公司的服务器,在家远程连接学校实验室的服务器…)应该如何实现呢?
原理:通过内网穿透实现ssh远程连接
工具:cpolar内网穿透
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
cpolar version
登录cpolar官网后台,点击左侧的验证
,查看自己的认证token,之后将token贴在命令行里。
cpolar authtoken xxxxxxx
cpolar http 8080
按ctrl+c退出
sudo systemctl enable cpolar
sudo systemctl start cpolar
sudo systemctl status cpolar
如下所示,正常显示为active
则为正常启动状态
安装完成后,会默认配置一个简单的样例配置文件,创建了两个样例隧道,一个是web隧道指向 http 8080端口,一个是ssh隧道指向tcp 22端口。我们用到的就是ssh隧道,登录cpolar官网后台,点击左侧的状态
,查看ssh隧道对应的URL。
ssh -p XXXXX username@公网地址
# XXXXX为cpolar生成的端口号,为ssh隧道对应URL最后面的“:”后面的数字。
# username为服务器用户名,例如root。
# 公网地址为ssh隧道对应的URL中的地址,例如1.tcp.vip.cpolar.cn
# example:ssh -p 11556 [email protected]
成功连接!!!
【注】使用免费的cpoalr内网穿透所生成的公网地址为随机临时地址,24小时内会随机变化。如果需要长期远程访问建议配置固定TCP端口地址,并提高带宽,实现更为高效流畅的远程。
参考:
cpolar使用文档
Bash 脚本教程