通过SSH隧道访问局域网机器

背景:

如果局域网有一台机器A,这台机器只能访问外网,但外网不能反向访问这台机器。同时在外网有一台有公网IP的机器B(阿里云,或者腾讯云等VPS),这样就可以通过简单的方法让外网的机器可以访问局域网的机器。我都是基于linux下的机器,原则上如果是windows,将个putty或者crt也能实现。

方案:

  1. 在局域网的机器上利用ssh -R的命令建立一条反向隧道。
    nohup ssh -t -t -R 2266:127.0.0.1:22 user@外网机器B的IP >nohup.out & 

意思是ssh上外网机器B,然后在机器B上打开监听端口2266,访问2266端口就是通过隧道访问局域网机器B的22端口。 由于采用的是nohup运行,设置好ssh免密码登陆,就不用每次都输入密码了。 2. 在外网机器B上,只能执行以下命令,就能反向ssh到局域网B的机器了。

    ssh user@127.0.0.1 -p 2266
  1. 设置外网机器B的SSH心跳 这里存在一个问题,如果不设置SSH发送心跳,这条隧道很快就会超时,断开。所以在外网机器B上设置:经过这样的测试,发现一天了这个隧道还能用。
    # 打开
    sudo vim /etc/ssh/sshd_config
    # 添加
    ClientAliveInterval 30
    ClientAliveCountMax 6
  1. 其他解决方法: 其他这样的设置已能解决我的需求了,我可以在家里上公网的机器然后通过这个隧道ssh回公司内网的机器,就能再跳去其他机器了。其实还有几种其他的方案: 4.1 云风也曾经介绍过类似的方案,参考这里,他也是采用ssh -R,但他多搞了几步,安装了vtund,让内网的机器成为路由,能更进一步自由地访问内网网络。 4.2 用N2N的VPN软件,建立一个VPN网络。 4.3 自己写个UPD的NAT打洞,穿越进来。

参考文档:

转载于:https://my.oschina.net/mawx/blog/471477

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值