type
status
date
slug
summary
tags
category
icon
password
Tweet Link
Staus
类型
平台
💡
大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、互联网和自媒体。
要把内网的一台的Ubuntu服务器让外面也能访问,总共有三种可行的方案,前面已经介绍了远程桌面工具Teamviewer电信公网IP端口映射两种方式,今天就来介绍更健壮稳定的方式——ssh反向代理。
大概的框架图如下,今天就从服务器购买到设置,手把手的教程,让你花费100块以内,就拥有一个强大的「云服务器」。
 
notion image

服务器B购买与设置

  1. 点击阿里云产品链接,购买服务器
    1. notion image
      第一年很便宜,82块/年,用来玩玩绝对没压力。
  1. 在系统镜像中选择Ubuntu,点击立即购买完成支付,你将获得一台云服务器,这台服务器将有基本运行的Ubuntu系统的配置,并且拥有固定的外网IP。
    1. notion image
  1. 进入控制台,设置允许密码登陆。 选择第1个,立即登陆
    1. notion image
      修改允许密码登陆修改如下 vim /etc/ssh/sshd_config 设置为yes
      notion image
      然后重启服务:sudo service ssh restart
  1. 重置密码
    1. 然后退出来,再次进入控制台,选择第2个登陆,第一次需要设置密码。设置好密码之后,这样通过ssh终端进行登陆了。
      notion image
  1. 设置安全规则
    1. 阿里云的案例规格比较麻烦,先有安全组,然后还有防火墙。基本思路就是先把防火墙关掉,保留阿里云的安全的安全策略即可。
      • 防火墙
      确保ufw status是非激活的状态
      notion image
      • 安全规则
      这里要注意一下,阿里云的服务器有两种:ECS和轻量应用服务器
      notion image
      如果ECS是在安全组里面管理进出口端口策略,先进入安全组管理页面,选择自己服务器的区域,添加如下规则:
      notion image
      如果是轻量应用服务器,本案例就是这种类型,就在它的实例里面防火墙→管理规则
      notion image
      我们是选择的轻量服务器产品,所以就设置这个产品的的管理规则,我开放了26919到26990的端口
      notion image
  1. 接下来,需要设备一下服务器的ssh配置,打开TCP端口转发,vim /etc/ssh/sshd_config
    1. AllowTcpForwarding yes GatewayPorts yes
      notion image
      再重启服务:service ssh restart

服务器A的设置

  1. 在A的机器上执行ssh反向代理
    1. ssh -NR 26919:localhost:22 user_name_B@host_ip_B
      这条命令就是是在远程服务器B开了一个端口26919,与本机A的端口22进行了数据转发。即以后所有访问B的26919端口的数据,就到达A的22。通过这样的反向代理实现了内部机器的访问。
  1. 在服务器B,查看一下端口,26919端口已经正常监听了
    1. notion image
  1. 在服务器B上登陆测试: ssh koffu@localhost -p 26919
    1. notion image
      可以看到B到A完成正常登陆,说到B到A的通道打通了。接下来就是在我们另外一电脑C,通过B访问A。
       

公司电脑C的连接

  1. 在第三台电脑C上,先测试端口
    1. ~ nc -zv al.agihub.top 26919 Connection to al.agihub.top port 26919 [tcp/*] succeeded!
      说明26919端口访问正常
      如果没有返回,或者超时,就需要看一下防火墙和安全策略的配置
      notion image
  1. 接着使用ssh -p 26919 Username_A@IP_B即可正常访问
    1. notion image
到此,电脑C,通过外网(阿里云)服务器B,就访问到A家里的设备了。这种映射是路由网关自动维持的,不会持续下去,如果连接断开或者网络不稳定都会导致通信失败,我们还需要改用autossh来保持这样的反向代理连接,接着往下着。
 

Autossh和后端运行、开机运行

这样 NAT 路由/防火墙就会在内网主机和外网主机之间建立映射即可相互通信了。但这种映射是路由网关自动维持的,不会持续下去,如果连接断开或者网络不稳定都会导致通信失败,这时内网主机需要自动重连机制了。autossh就是这个问题的解决方案
autossh -M 26990 -NR 26919:localhost:22 Username_B@IP_B
如果要打开调试信息,可以在前面加AUTOSSH_DEBUG=1
AUTOSSH_DEBUG=1 autossh -M 26990 -NR 26919:localhost:22 Username_B@IP_B
notion image
映射多个端口,那就加多个-NR的参数,如下
autossh -M 26990 -NR 26919:localhost:22 -NR 26910:localhost:3000 -NR 26912:localhost:7861 user_name@IP_server
开机自启动,可以通过cron方案,只需要添加一句命令就可以搞定。
crontab -e进入任务编辑界面,然后按自己的信息,添加如下:
@reboot autossh -f -M 26990 -NR 26919:localhost:22 -NR 26910:localhost:3000 -NR 26912:localhost:7861 user_name@IP_server

后记

通过这种方式,就实现了在公司也能访问家里的内部服务器,整个过程不算复杂,但要学会在出现问题的时候,能够各个阶段的验证,一步步排除。比如我最开始,在阿里去的安全策略那里没设置好,折腾了半天。
好了,把一台局域网的电脑开放出去,常用的三种方案我都给大家详细说明了,大家有什么问题,请留言讨论。

参考

 
 
Word接入ChatGPT,写个周报、作文一键搞定-Windows版本Ubuntu远程访问2——通过电信公网IP

可夫小子
可夫小子
关注AIGC、读书和自媒体
公告
type
status
date
slug
summary
tags
category
icon
password
Tweet Link
Staus
类型
平台
ChatGPT、Midjourney、AIGC、人工智能、程序员、
Notion、读书、写作、个人成长、
独立开发者、自媒体、个人副业、技术掘金。
请关注我的知识星球:
notion image