分享

ssh内网穿透记录(两个不同的内网环境,不用端口映射)

 WindySky 2018-04-27

标签:style   com   http   si   la   sp   c   数据   bs   

场景: 在家连接公司的内网服务器.

需求: 不用端口映射在家用putty登录公司内网服务器.

条件: 有一台公网服务器做转发,有开放端口的控制权.(公网服务器可以是阿里云ECS, 腾讯云主机这样的公网服务器.也可以是你家的linux路由器,前提是路由器外网IP是固定的或者看起来是固定的.)

探索:早有耳闻ssh端口转发的强大功力,一直未研究.今日有上述需求,所以摸索了一番,得此文,谨做备忘记录.

  在公司不可能给我开一个端口转发的情况下, 一开始我是这么想的,既然我有个阿里云服务器,那我在公司的机器上ssh连接到我的ECS,然后家里也登录到我的ECS.再写个python脚本,做下转发.

  就能连通家里的内网和公司的内网.但是too young too simple. 脚本不能接管ssh的交互和认证等一下. 于是想,这些交互\认证本来就是sshd干的事, 我为了转发岂不是要自己做一遍,这不太现实.

  然后我就想起了这篇文章[实战 SSH 端口转发]. 看完后我的理解是: 本地转发 就是ssh client开个端口转发数据给ssh server.  远程转发 就是ssh server开个端口转发数据给ssh client.

  公司机器在内网啊, 不可能做ssh server. 那就做ssh client咯, 然后用远程转发, 于是在公司机器上执行: ssh -g -R -f -N x.x.x.x:2001:localhost:22 x.x.x.x

  -f Requests ssh to go to background just before command execution.

    后台运行,推荐加上 -n 参数
  -n Redirects stdin from /dev/null (actually, prevents reading from stdin).
  -N Do not execute a remote command.

    不执行远程命令

  -T Disable pseudo-tty allocation.

    不占用 shell

  x.x.x.x是我的ECS服务器公网IP, -g是允许除了127.0.0.1以外的其他IP地址也能监听和转发.{see man sshd_config(5)} localhost是指ssh client自己的127.0.0.1

  Note: service sshd restart

  整个命令这样理解: 公司机器告诉ECS说 你给我监听一下你的IP的2001端口,把这个2001端口的所有数据都发到我这的127.0.0.1的22端口.

  然后我在家里用putty 设置IP为ECS的x.x.x.x 端口为2001,就连上了公司的机器 .并且ssh登录成功

 

ssh内网穿透记录(两个不同的内网环境,不用端口映射)

标签:style   com   http   si   la   sp   c   数据   bs   

原文:http://www.cnblogs.com/Bolia/p/5930787.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多