简说 SSH 隧道-- Local 与 Remote 端口转发

一、用 LocalForward 访问远端不能直接访问的东西

1.1 远端被墙了

假定你所在的网络无法直连某个服务器,比如 goodle.com,但你有一台 vps 可以连接 goodle.com,你可以这样

ssh -L 8888:goodle.com:80 yourname@yourvps.com
-L 表示 Local 转发
这一句表示 forward my (local)localhost port 8888 to goodle.com at port 80

连接成功之后,打开你的浏览器,输入 http://localhost:8888 哇,Goodle 能够访问了!

1.2 远端没有被墙,但它只允许自己(localhost)访问自己

比如你那台数据库服务器,只允许 localhost 访问。可你….就是想远程访问嘛

ssh -L 3406:localhost:3306 yourname@yourdbserver.com
这一句表示 forward my (local)localhost port 3406 to (remote)localhost at port 80
许多人被两个端口之间夹着的 localhost 迷惑,我上面这句解释够清楚了,希望你不要犯糊涂。

连接成功之后,

mysql -u uname -p pass -P 3406 -hlocalhost
这一句里的 localhost 当然是 (local)localhost

你现在就可以愉快地玩耍了。

二、用 RemoteForward 让远端访问你本地的东西

假设你做了个好玩的网站,想展示给你网上的朋友看。然而你并没有公网IP,或者你虽然有公网IP,但是你没有路由器管理密码… 总之他没有法子直接连接你的机器。

然而你有一台vps,那就好办了

ssh -R 8888:localhost:80 yourname@yourvps.com
-R 表示Remote 转发
这一句表示 forward my (local)localhost port 80 to (remote)machine at port 8888

你现在访问

http://yourvps.com:8888

理论上就可以看到你本地机器上运行的新奇网站了。当然,这只是理论上,你也有可能看不到,如果你 vps 上的配置不太合适的话。假定你遇到了这种情况….(其实大部分情况下都会遇到,因为 sshd 的默认配置是不允许这种事情发生的

首先登录到 vps 机器,然后
sudo vim /etc/ssh/sshd_config
把下面这行配置放到 sshd_config 的末尾(其实放别的位置也可以的
GatewayPorts yes
然后 sudo service ssh restart , 再来一遍。

三、别急,还有一点技巧要说

你也许注意到我们在创建隧道的同时,每次都登录进远端机器并且拿到一个终端(而且还不能随便关闭….,一关隧道就断了)。这确实有点蛋疼多此一举,毕竟我们只想开个隧道。

ssh -nNT -R 8888:localhost:80 yourname@yourvps.com

注意上面的黑体参数。 -nNT 可以保你只开隧道,不进终端。

这其实是一篇翻译文章(然而并不忠实原文)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值