SSH远端映射

首先要记住一件事情就是:

SSH 端口转发自然需要 SSH 连接,而 SSH 连接是有方向的,从 SSH Client 到 SSH Server 。

而我们所要访问的应用也是有方向的,应用连接的方向也是从应用的 Client 端连接到应用的 Server 端。比如需要我们要访问Internet上的Web站点时,Http应用的方向就是从我们自己这台主机(Client)到远处的Web Server。

如果SSH连接和应用的连接这两个连接的方向一致,那我们就说它是本地转发。

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

如果SSH连接和应用的连接这两个连接的方向不同,那我们就说它是远程转发。

ssh -R <local port>:<remote host>:<remote port> <SSH hostname>

<PIC>

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

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

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

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

  公司的网络管理员不可能给我开一个端口转发,只能自己动手, 然后我就想起了这篇文章[实战 SSH 端口转发].

  看完后我的理解是: 本地转发 就是:ssh client开个端口转发数据给ssh server.  远程转发 就是:ssh server开个端口转发数据给ssh client.

  公司机器在内网啊, 我的ECS服务器连不上,不可能做ssh server. 那就只能当做ssh client咯.  用远程转发让ECS开个端口转发数据给ssh client.

  于是在公司机器上执行:

   ssh -gfnNTR x.x.x.x:2333:localhost:22 root@x.x.x.x -o ServerAliveInterval=300

复制代码

  Note: x.x.x.x是我的ECS服务器公网IP  localhost是指ssh client自己的127.0.0.1 .

  -o ServerAliveInterval=300
    的意思是让ssh client每300秒就给server发个心跳,以免链路被RST.
  -f Requests ssh to go to background just before command execution.
    让该命令后台运行 .
  -n Redirects stdin from /dev/null (actually, prevents reading from stdin).
 
  -N Do not execute a remote command.
    不执行远程命令 .
  -T Disable pseudo-tty allocation.
    不占用 shell .
  -g Allows remote hosts to connect to local forwarded ports.
    允许非本机地址(任何公网IP)连接x.x.x.x的2333端口.{see man sshd_config(5)}.
    这个选项非常重要, 要让这个选项生效需要在x.x.x.x服务器(ssh server)上编辑/etc/ssh/sshd_config 添加一行GatewayPorts yes 然后保存退出并 service ssh restart.

复制代码

 

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

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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值