用ssh和socat分分钟搞定Linux各种端口转发

原文地址::http://baijiahao.baidu.com/s?id=1581577504614740481&wfr=spider&for=pc

 

本地端口映射

小明写了一个Web服务,监听hosta上8080端口,小王现在想访问这个服务,有没有快速的方法?

SSH本地端口转发

其实很简单,小明只需要做这两件事情:

申请一台带公网IP的公有云服务器hostb,我们假设ip地址是12.34.56.78

在hosta上执行下面的命令,它会建立一个从hosta到hostb的ssh会话,同时将8080端口映射到hostb的1080端口。

ssh -R 1080:localhost:8080 root@12.34.56.78

这样,小王就可以愉快的用http://12.34.66.78:1080访问小明的服务了。

远程Unix Socket映射

除了将我们本地服务通过端口映射提供给其它人访问,我们还可以通过端口转发玩一些更high的。比如下面这条命令,它把监听在远程主机12.34.56.78上的mysql服务unix socket映射到本地的/var/run/mysqld.temp.sock,这样,小明就可以用mysql -S /var/run/mysqld/mysqld.temp.sock来访问远程主机的mysql服务了。

socat "UNIX-LISTEN:/var/run/mysqld.temp.sock,reuseaddr,fork" EXEC:"ssh root@12.34.56.78 socat STDIO UNIX-CONNECT\:/var/run/mysqld/mysqld.sock"

当然,小明如果不喜欢本地unix socket,他还可以用下面的命令把12.34.56.78上的mysql映射到本地的5500端口,然后使用mysql -p 5500命令访问。

socat TCP-LISTEN:5500 EXEC:'ssh root@12.34.56.78 "socat STDIO UNIX-CONNECT:/var/run/mysqld/mysqld.sock"'

UDP也不在话下,比如下面这条命令可以把12.34.56.78的udp 161端口映射到本地的1611端口:

socat udp-listen:1611 system:'ssh root@12.34.56.78 "socat stdio udp-connect:remotetarget:161"'

上面代码和使用方法,我都已经上传到我的github:https://github.com/luohao-brian/funny_linux_cmds/tree/master/portfwd

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值