内网穿透 - SSH反向代理

SSH反向代理有着很广泛的实际应用,

实例描述:
本人在家庭局域网放置有一个树莓派主机(无公网ip),正常情况下只能在家庭局域网内通过
ssh连接这台树莓派主机,但如果本人想在其他地方(非本地局域网)对它进行远程登陆,则需要进行SSH反向代理。

如下图示例,我的树莓派主机A可以ping通我的公网主机B(有公网IP),远程操控的主机C也可以ping通我的公网主机B,主机A和C之间是无法直接连通,它们分属两个局域网。
在这里插入图片描述

SSH有个强大的功能就是端口转发,那么,我们可以利用ssh的端口转发功能实现SSH反向代理登陆。如下操作:

登陆代理
反向代理
端口转发
C
B
A

建立A机器到B机器的反向代理,
具体指令为:

ssh -fCNR [B机器IP或省略]:[B机器端口]:[A机器的IP]:[A机器端口] [登陆B机器的用户名@服务器IP] 

在这里我使用了B机器的7280端口,以及A机器的22端口,按照上面的指令就是这样子的操作

ssh -fCNR 7280:localhost:22 root@123.123.123.123

检验是否已经启动了可以使用ps aux | grep ssh指令来查看:

建立B机器的正向代理,用来做转发,具体指令为

ssh -fCNL [A机器IP或省略]:[A机器端口]:[B机器的IP]:[B机器端口] [登陆B机器的用户名@B机器的IP]
按照第3那里输入的指令,这里的B机器的端口和上面的B机器的端口是一致的,端口1234的也是B机器的。

ssh -fCNL *:1234:localhost:7280 localhost

检验是否已经启动了可以使用ps aux | grep ssh指令来查看:

至此我们都配置好了AB机器,那么我们就可以从一部外网的电脑登陆到内网里面去啦。鉴于我目前的电脑在内网,而服务器都是外网的(也就是配置的B机器),所以可以通过B机器连接到我内网的A中,具体指令为:

ssh -p 1234 hostname@123.123.123.123 

在此-p参数为指定登陆的IP,我们在上面指定了1234端口为转发端口,故用1234端口登陆,然后hostname是内网A机器的用户名,123.123.123.123为外网B机器的IP地址。

用autossh建立稳定隧道
以上步骤建立的SSH反向代理隧道是不稳定的,一旦断掉就会非常麻烦,需要在A/B机器上重新建立链接,如果说你在只能操作另外的C机器的环境而无法控制A/B机器,那么你将无法重建隧道。

centos7上没有默认安装autossh的,所以使用以下命令安装:

yum install autossh

来看看具体的autossh的指令为

autossh -M 7281 -fCNR 7280:localhost:22 root@123.123.123.123 

=================================================
Tips: SSH反向代理也可以应用到从公网访问局域网的web服务,实现内网穿透,只要将端口转发映射到80端口即可。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值