Use SSH to Connect Intranet Server
这篇文章的另一个名字叫《如何远程访问内网内设备的命令行》,并且提供了一个SSH解决方案。
SSH是什么
基础概况
- SSH是每一台Linux电脑的标准配置。简单说,SSH是一种网络协议,用于计算机之间的加密登录。
- 最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
- SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。
基本使用
- SSH主要用于远程登录。假定你要以用户名user,登录远程主机 host (公网IP),且端口号为22 (默认为22), 则登陆命令为:
$ ssh -p 22 user@host
如果本地用户名与远程用户名一致,可简化如下:
$ ssh host
- 如果你的机器有唯一外网IP,那么到这里为止你应该可以远程连接设备了,处于内网的设备, 可以使用 natapp 进行内网穿透。
在 natapp官网 完成实名认证(可用支付宝完成),之后需要购买TCP隧道用于SSH访问,natapp提供了几种选择:
(1)免费隧道: 域名/端口随机,且不定时强制更换
(2)多种需求付费: 固定域名/端口,多种流量套餐
如果只需要在实验室内网跑跑数据,其实最便宜的套餐即可满足需求。
- 购买
隧道协议:选TCP
远程端口:任意一个没有使用的端口
本地端口: 如果您是SSH,则填写22, 数据库端口如果是mysql, 填3306, 以此类推.
购买结束后,隧道会被分配到一个token,用于配置。
- 下载客户端
注意,这里是下载到是服务器端的文件。
这里用linux进行演示,其他系统同理。
- 配置
用vim或者其他文本编辑器打开config.ini,在authtoken处添加隧道的token,保存。
- 运行服务端程序
设置访问权限
chmod a+x natapp
在服务器端启动natapp程序
./natapp
此时, 代表穿透成功, Forwarding处即为分配的外网ip地址。
- 客户端访问
以ssh为例,可以如下访问:
ssh myuser@natapp_ip -p number
myuser填写服务端登陆用户名,如root
natapp_ip填写分配的外网ip地址,如forwarding为tcp://test.natapp1.cc:6553,则填写test.natapp1.cc
-p 后参数 number 为远程端口号,如forwarding为tcp://test.natapp1.cc:6553,则填写6553
实用技巧:
-
如您有同一类型的web隧道
比如有vip1型web隧道,域名为xxx.s1.natapp.cc
那么tcp得ip地址 可以不用管显示,在应用处直接填写 xxx.s1.natapp.cc 即可.
如有注册natapp二级域名,如test.natapp1.cc.且已绑定到web隧道.
那么 使用 tcp://test.natapp1.cc:6553 同样可行.
-
如果有自主域名,直接将域名做cname到s1.natapp.cc
则 xxx.mysite.com:6653 也直接可用.(未备案可能被拦截,自行考虑)
-
如果想单独定义tcp类型的域名,注册natapp二级域名,在二级域名管理界面,点手动解析到响应的隧道类型即可