SSH 端口转发

SSH 端口转发也被叫做SSH隧道(ssh tunnel),因为它们都是通过SSH登陆之后,在SSH客户端与SSH服务端之间建立了一个隧道,从而进行通信。SSH隧道是非常安全的,因为SSH是通过加密传输数据的(SSH全称为Secure Shell)。

主要有3中模式,本地端口转发(Local Port Forwarding),远程端口转发(Remote Port Forwarding)以及动态端口转发(Dynamic Port Forwarding)。对于本地/远程端口转发,两者的方向恰好相反。动态端口转发,早些年用于科学上网,现在基本没有用了。

1.本地转发(-L):

比如你现在需要连接到正式环境的数据库,那么你不需要先ssh到正式环境再输入数据库命令。我的做法是选择用图形界面查看数据库。命令是这样的

ssh -L  6789:192.168.10.10:5432 online

含义就是将本地6789端口接受到的请求转发到生产环境online上面的192.168.10.10:5432,这样本地GUI数据库管理程序就能够直接连接本地6789端口显示线上数据了。可以看出它的作用就是将本地端口的请求转发的服务器上面

2.远程转发(-R)

这个就是和本地转发相反。在连接的服务器上打开一个端口,映射到自己的端口。此时数据流是服务器端口接收到的数据传到了本地。比如你需要一个公网ip(显然我们的办公环境都是没有公网ip的)来调试你的web应用,比如你本地写了个web程序监听8989端口,你远程服务器上有公网ip。你需要把web程序临时分享到公网给别人尝试使用。执行以下命令

ssh -R 4321:127.0.0.1:8989 online

这样别人访问online:4321就会映射到你本地的8989端口上

3.助记
刚开始可能觉得端口比较容易混淆。只需要记住xx:xx,前面是入口,后面是出口。本地转发的时候数据是从本地发到远程。所以6789是本地端口。远程转发的时候数据是从远程发到本地。所以8989是本地端口

4.常用参数
假如你只需要端口映射不需要进入终端执行命令。可以增加-Nf参数,-N为不进入交互式终端。f为后台执行。假如你需要长期使用,那就使用autossh,和ssh一个套路。就不举例了。

参考:https://www.zoulei.net/2017/03/12/ssh-port-forward/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值