ssh(localforward)

起因是我的~/.ssh/config里有这样几行:

Host    D1 
    HostName    35.161.xx.xxx
    Port        222
    User        na.xxxx
    IdentityFile    ~/.ssh/id_rsa
    LocalForward    15439 redshift-db.xxxx.amazonaws.com:15439

其中35.161.xx.xxx是某台服务器(就叫S1吧)。
S1是个踏み台,本地机器会通过S1来连接到D1(redshift的数据库)。

然后,打开终端输入ssh D1之后,我就可以在tableau连接数据时,输入localhost来连接到D1.

想知道原理是啥,于是查了查。


https://qiita.com/t_uda/items/3d0547fa716f97449c64
根据这篇文章,

ssh -L aaaa:proxy.domain:bbbb myname@where.is.myhost

就相当于~/.ssh/config里的

Host myhost
    HostName where.is.myhost
    User myname
    LocalForward aaaa proxy.kuins.net:bbbb

这样的话,我的文件里就相当于

ssh -L 15439:redshift-db.xxxx.amazonaws.com:15439 na.xxxx@35.161.xx.xxx

然后我去查了ssh -L是什么。
http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html

“本地端口转发”(Local forwarding)。
假定host1是本地主机,host2是远程主机。由于种种原因,这两台主机之间无法连通。但是,另外还有一台host3,可以同时连通前面两台主机。因此,很自然的想法就是,通过host3,将host1连上host2。
我们在host1执行下面的命令:

ssh -L 2121:host2:21 host3

命令中的L参数一共接受三个值,分别是"本地端口:目标主机:目标主机端口",它们之间用冒号分隔。这条命令的意思,就是指定SSH绑定本地端口2121,然后指定host3将所有的数据,转发到目标主机host2的21端口(假定host2运行FTP,默认端口为21)。
这样一来,我们只要连接host1的2121端口,就等于连上了host2的21端口

ftp localhost:2121

“本地端口转发"使得host1和host3之间仿佛形成一个数据传输的秘密隧道,因此又被称为"SSH隧道”。

下面是一个比较有趣的例子。

ssh -L 5900:localhost:5900 host3

它表示将本机的5900端口绑定host3的5900端口(这里的localhost指的是host3,因为目标主机是相对host3而言的)。
另一个例子是通过host3的端口转发,ssh登录host2。

ssh -L 9001:host2:22 host3

这时,只要ssh登录本机的9001端口,就相当于登录host2了。

ssh -p 9001 localhost

上面的-p参数表示指定登录端口。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值