Use SSH to Connect Intranet Server

SSH内网穿透访问服务器

Posted by Kylin on May 29, 2019

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二级域名,在二级域名管理界面,点手动解析到响应的隧道类型即可