SSH端口转发三种方式看这个就够了

最近公司项目上线,由于需要先跑一遍脚本去处理线上的旧数据,但是线上的库只有在线上服务器才可以连接,本地是直接连不通的,所以想到了使用ssh端口转发来通过线上的服务器当做跳板机远程连接到线上的数据库。同理在外网想连接内网的机器也是行得通的

ssh端口转发

  1. sshd_config里要打开AllowTcpForwarding选项,否则-R远程端口转发会失败。
  2. 默认转发到远程主机上的端口绑定的是127.0.0.1,如要绑定0.0.0.0需要打开sshd_config里的GatewayPorts选项。这个选项如果由于权限没法打开也有办法,可配合ssh -L将端口绑定到0.0.0.0,聪明的你应该能想到办法
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 本地端口转发
-D 动态端口转发

本地转发

ssh -NL [端口]:[目标IP]:[目标端口] [跳板机用户名]@[跳板机IP]
ssh -NL 13306:aliyuncs.com:3306 root@39.23.80.6
# 访问 127.0.0.1:13306     ->  aliyuncs.com:3306

本地转发是将 目标ip:目标端口 映射到 127.0.0.1:端口
即: 访问127.0.0.1:端口等于访问目标ip:目标端口

远端转发

ssh -NR [端口]:[目标IP]:[目标端口] [跳板机用户名]@[跳板机IP]
ssh -NR 8080:47.104.164.235:80 root@8.136.136.247
# 访问8.136.136.247:8080    -> 47.104.164.235:80

ssh -NR 8000:8.136.136.247:80 root@47.104.164.235
# 访问47.104.164.235:8000   ->   8.136.136.247:80

远端转发是将 目标ip:目标端口 映射到 跳板机的ip:端口
即: 访问跳板机的ip:端口等于访问 目标ip:目标端口

动态转发(相当于代理服务器)

ssh -ND [本地socke代理端口] [跳板机用户名]@[跳板机IP]
ssh -ND 2000 root@47.104.164.235

# 在浏览器或系统设置中将socke代理改成本地  127.0.0.1:2000 
# 然后本地所有的上网出口全部通过47.104.164.235进行转发。百度ip会发现本机ip是47.104.164.235

动态端口转发则只是绑定了一个本地端口,而目标地址:目标端口则是不固定的

目标地址:目标端口是由本地发起的请求决定的

比如访问baidu.com 则相当于把这个请求首先发送到了47.104.164.235,然后由47.104.164.235进行访问后将数据转发回至本地

即: 访问百度流程变成 本地 -> 47.104.164.235 -> 百度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值