前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSH高级功能 - 远程端口转发

SSH高级功能 - 远程端口转发

作者头像
十毛
发布2019-03-27 14:58:47
2.4K0
发布2019-03-27 14:58:47
举报

上一次介绍了SSH的本地端口转发,本文介绍一下与之相反的远程端口转发

场景

SSH本地端口转发

在本地端口的场景中,可以从Server-B建立到Server-A的SSH连接,但是如果Server-B到Server-A之间无法连接,只有Server-A到Server-B的连接呢? (比如开发机可以访问服务器,但是服务器一般是不可以访问本地开发机的)

这时候就要使用SSH的远程端口转发

SSH远程端口转发

远程端口转发就是把远程端口的数据转发到本地服务器

实现方式

假设Server-A的IP为192.168.58.101,Server-B的IP是192.168.58.103

在Server-A上执行如下命令:

代码语言:javascript
复制
ssh -f -N -R 9906:192.168.58.101:3306 192.168.58.103

上面的命令,就建立了远程端口转发,把远程服务器Server-B的9906端口的所有数据都会被转发到Server-A192.168.58.101的3306端口

使用

在Server-B上执行命令

代码语言:javascript
复制
mysql -h127.0.0.1 -P9906 -uroot -p

就可以连接到Server-A上的MySQL Server了

区别

本地端口转发:把本地端口数据转发到远程服务器,本地服务器作为SSH客户端及应用客户端 远程端口转发:把远程端口数据转发到本地服务器,本地服务器作为SSH客户端及应用服务端

链式端口转发

链式端口转发

本地端口转发远程端口转发结合起来使用,可以进行链式转发。假设A主机在公司,B主机在家,C主机为远程云主机。A主机上运行了前文的Node.js服务,需要在B主机上访问该服务。由于A和B不在同一个网络,且A主机没有独立公共IP地址,所以无法直接访问服务。

通过本地端口转发,将发送到B主机4000端口的请求,转发到远程云主机C的3000端口。

代码语言:javascript
复制
# 在B主机登陆远程云主机C,并进行本地端口转发
ssh -L 4000:103.59.22.17:3000 root@103.59.22.17

通过远程端口转发,将发送到远程云主机C端口3000的请求,转发到A主机的2000端口。

代码语言:javascript
复制
# 在A主机登陆远程云主机C,并进行远程端口转发
ssh -R 3000:localhost:2000 root@103.59.22.17

这样,在主机B可以通过访问http://localhost:4000来访问主机A上的服务。

代码语言:javascript
复制
# 在主机B访问主机A上的服务
curl http://localhost:4000
Hello Fundebug

系列

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.01.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景
  • 实现方式
  • 使用
  • 区别
  • 链式端口转发
  • 系列
  • 参考
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档