SSH通过外网连接内网主机

本文介绍如何通过公网服务器代理连接内网主机的方法,实现内网主机对外部网络的可见性。详细解释了使用ssh命令配置端口转发的具体步骤,并介绍了如何借助autossh工具保持稳定连接。

主机处于内网中时,因为没有公网IP,所以对公网是不可见的,可以利用公网服务器进行代理连接内网主机

具体过程

  • 现在有内网主机A,然后还有一个有公网IP的主机B
  • 在内网服务器A上输入一下命令:
ssh -NfR 8899:localhost:22 root@B地址 -p 22
# -f 后台执行ssh指令
# -C 允许压缩数据
# -N 不执行远程指令
# -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
# -L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
# -p 指定远程主机的端口
  • 然后在B上执行一下命令,可以看到成功监听8899端口:
ss -ant |grep 8899
  • 然后在公网服务器B上执行,发现能够登录内网服务器:
ssh root@localhost -p 8899

autossh使用

然而直接使用ssh是不稳定的,可以通过autossh建立一条稳定的连接


  • 执行一下命令,其中-M表示监听ssh连接是否稳定的监听端口:
autossh -M 8888 -NfR 8899:localhost:22 root@B地址 -p 22
要实现在外网通过SSH连接本地家庭网络中的虚拟机,需要完成以下配置步骤: 1. **确保虚拟机的网络模式正确** 虚拟机的网络模式决定了它如何与外部网络通信。对于外网访问的需求,NAT模式通常不允许外部主机直接访问虚拟机。因此,可以采用以下方式: - **桥接模式(Bridged Mode)**:虚拟机会获得与家庭网络相同的子网中的独立IP地址,从而可以直接通过家庭网络访问[^2]。 - **端口转发(Port Forwarding)**:如果使用NAT模式,可以通过在虚拟机管理软件中配置端口转发规则,将宿主机的某个端口转发到虚拟机的SSH端口(默认为22)。例如,在VirtualBox中,可以在虚拟机设置的“网络”部分中添加端口转发规则:`名称:SSH,协议:TCP,宿主机IP:空,宿主机端口:2222,虚拟机IP:虚拟机的IP地址,虚拟机端口:22`。通过这种方式,可以从外网访问宿主机的IP地址和端口2222,进而连接到虚拟机的SSH服务[^2]。 2. **配置家庭路由器的端口转发** 为了从外网访问家庭网络中的宿主机或虚拟机,需要在家庭路由器上配置端口转发规则。具体步骤如下: - 登录路由器的管理界面(通常通过浏览器访问192.168.1.1或192.168.0.1)。 - 找到“端口转发”或“虚拟服务器”设置部分。 - 添加一条规则,将外部端口(例如2222)转发到宿主机的内部IP地址和对应的端口(例如宿主机的2222端口,或者虚拟机的22端口)。 3. **获取家庭网络的公网IP地址** 家庭网络通常通过路由器连接到互联网,而路由器会分配一个内网IP地址给家庭设备。为了从外网访问,需要知道家庭网络的公网IP地址。可以通过访问[https://whatismyipaddress.com/](https://whatismyipaddress.com/)等网站来查看当前的公网IP地址。 4. **配置动态DNS(可选)** 家庭网络的公网IP地址可能会随着时间变化,特别是如果使用的是动态IP地址分配。为了避免每次IP地址变化都需要手动更新连接信息,可以使用动态DNS服务(如No-IP或DynDNS),将动态IP地址绑定到一个固定的域名上。这样,即使IP地址发生变化,也可以通过域名访问家庭网络中的设备。 5. **确保防火墙允许SSH连接** 在虚拟机和宿主机上,需要确保防火墙允许SSH流量通过。可以通过以下命令检查和配置防火墙规则: ```bash sudo ufw allow 22 ``` 如果使用了自定义端口(如2222),则需要相应地调整防火墙规则。 6. **测试外网连接** 完成上述配置后,可以通过外网设备使用SSH客户端连接家庭网络中的虚拟机。例如,如果家庭网络的公网IP地址为`123.45.67.89`,并且配置了端口转发将外部端口2222转发到虚拟机的SSH端口,则可以使用以下命令进行连接: ```bash ssh username@123.45.67.89 -p 2222 ``` ### 注意事项 - **安全性**:开放SSH服务到外网可能会带来安全风险,建议启用密钥认证并禁用密码登录,同时定期更新系统和SSH服务。 - **稳定性**:家庭网络的公网IP地址可能不稳定,建议使用动态DNS服务以保持连接的稳定性。 - **性能**:外网连接的速度和稳定性取决于家庭网络的带宽和质量,可能不如局域网内的连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值