SSH为建立在应用层基础上的安全协议,专为远程登录会话和其他网络服务提供安全性的协议。但在没有公网IP的环境下,只能在同个局域网下远程。
本篇教程主要实现通过内网穿透,在公网环境下SSH远程登录内网的Ubuntu主机,突破局域网的限制,无需公网IP,也不用设置路由器,操作简单。
1. Ubuntu安装SSH
1.1 确认是否安装SSH
telnet 127.0.0.1 22
如果本地电子设备中安装了SSH,则会连接上该端口的设备;但如果没有安装SSH,则会显示如下信息:
1.2 安装SSH
sudo apt-get install openssh-server
并在命令确认时输入“y”,确定在Ubuntu系统中安装SSH
telnet 127.0.0.1 22
就能看到Ubuntu系统已经显示出端口22的反馈信息(如果Ubuntu系统中安装了SSH,也会显示此信息)
2. 局域网内SSH远程Ubuntu
2.1 查找Ubuntu的IP地址
ifconfig
2.2 测试局域网内SSH远程
在同个局域网内通过另一台设备测试SSH远程
ssh (Ubuntu系统主机名称)@(Ubuntu的IP地址)
windows系统询问是否连接时输入yes
至此实现了在局域网内SSH远程,如果不在同个局域网想要实现SSH远程,可以用cpolar内网穿透来映射22端口,并通过所生成的公网地址来实现公网远程连接。
cpolar支持http/https/tcp协议,可以永久免费使用,不限制流量,目前还支持21天退款保证。
3. 安装配置cpolar内网穿透
3.1 安装cpolar内网穿透
- 国内使用(支持一键自动安装脚本)
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- 或 cpolar短链接安装方式:(国外使用)
curl -sL https://git.io/cpolar | sudo bash
3.2 查看版本号
cpolar version
3.3 token认证
登录cpolar官网后台——验证,查看自己的认证token,之后将token贴在命令行里
cpolar authtoken xxxxxxx(xxx替换为你的token码)
3.4 向系统添加服务
sudo systemctl enable cpolar
3.5 启动cpolar服务
sudo systemctl start cpolar
3.6 查看服务状态
sudo systemctl status cpolar
若正常显示如下信息,就说明cpolar配置成功。
4. 创建隧道映射22端口
在浏览器上访问本地9200端口(127.0.0.1:9200),使用cpolar账号登录进入cpolar web ui管理界面【如果你还没注册cpolar账号,到cpolar官网注册使用邮箱注册一个就可以了】
cpolar内网穿透官网:https://www.cpolar.com/
cpolar默认会安装两个样例隧道,一个是Website隧道指向http 8080端口,一个是ssh隧道,指向tcp 22端口【可自行删减或者修改】
我们可以直接使用默认安装的样例隧道,或者重新创建隧道来映射:
点击左侧仪表盘的隧道管理
——创建隧道
填写隧道信息:
- 隧道名称:可自定义,注意不要重复
- 协议:选择
tcp
协议 - 本地地址:填写
22
- 端口类型:免费选择
随机临时TCP端口
- 地区:建议选择
China VIP
或者China
点击创建
隧道创建成功后,我们可以在左侧仪表盘的状态
——在线隧道列表
查看到所生成的公网地址。或者登录cpolar官网后台——状态进行查看所有在线隧道,将公网地址复制下来。
5. 公网SSH远程连接Ubuntu
ssh -p XXXXX 用户名@1.tcp.cpolar.io
如:
ssh -p 23501 root@1.tcp.cpolar.io
其中,X为cpolar生成的端口号,用户名需替换为Ubuntu主机用户名)。需要注意的是,在数字端口号之前,需要添加“(空格)-p(空格)”参数,否则无法连接隧道;其次是“ssh -p XXXXX 用户名@”之后,必须输入复制客户端生成的tcp地址。
6. 配置固定的TCP端口地址
由于使用免费的cpolar所生成的公网地址为随机临时地址,会24小时变化,对于需要长期远程的用户来讲十分不方便,因此配置使用固定的TCP端口地址是非常必要的。
首先需要将cpolar升级为专业版套餐或以上,支持配置固定的TCP端口地址,同时带宽也会增大3倍,为3M带宽,使用更为稳定。
6.1 保留一个固定的TCP端口地址
点击登录进入cpolar官网——后台,点击左侧的预留
,找到保留的TCP地址
,我们来为SSH远程Ubuntu保留一个固定的TCP端口:
- 地区:选择
china VIP
- 描述:即备注,可自定义填写
填写完成后,点击右侧的保留
固定TCP端口地址保留成功后,会生成相应的公网地址,将其复制下来
6.2 将固定TCP端口配置到SSH隧道
访问本地9200端口,登录cpolar web ui管理界面。
点击左侧的隧道管理
——隧道列表
,找到SSH远程Ubuntu的隧道,并点击右侧的编辑
修改隧道信息:
- 端口类型:选择
固定TCP端口
- 预留的TCP地址:填写刚刚在cpolar官网后台保留成功的固定TCP端口地址
点击更新
7. 使用固定TCP端口地址SSH远程Ubuntu
在公网环境下SSH远程连接内网Ubuntu
ssh -p XXXXX 用户名@1.tcp.vip.cpolar.cn(X为cpolar生成的固定端口号,用户名替换为主机用户名)
如:
ssh -p 13456 root@1.tcp.vip.cpolar.cn
SSH远程连接Ubuntu成功,后续不必再查看随机变化的公网地址再进行远程了,只要保持被控端Ubuntu主机以及ssh隧道正常在线,就可以在外随时随地远程内网的Ubuntu了。