SSH 本地端口转发

  有时,绑定本地端口还不够,还必须指定数据传送的目标主机,从而造成点对点的"端口转发"。为了区别后文的"远程端口转发",咱们把这种状况称为"本地端口转发"(Local forwarding)。ssh

  假定host1是本地主机,host2是远程主机。因为种种缘由,这两台主机之间没法连通。可是,另外还有一台host3,能够同时连通前面两台主机。所以,很天然的想法就是,经过host3,将host1连上host2。spa

  咱们在host1执行下面的命令:code

$ ssh -L 2121:host2:21 host3

  命令中的L参数一共接受三个值,分别是"本地端口:目标主机:目标主机端口",它们之间用冒号分隔。这条命令的意思,就是指定SSH绑定本地端口2121,而后指定host3将全部的数据,转发到目标主机host2的21端口(假定host2运行FTP,默认端口为21)。blog

  这样一来,咱们只要链接host1的2121端口,就等于连上了host2的21端口。class

$ ftp localhost:2121

  "本地端口转发"使得host1和host3之间仿佛造成一个数据传输的秘密隧道,所以又被称为"SSH隧道"。登录

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

$ ssh -L 5900:localhost:5900 host3  

  它表示将本机的5900端口绑定host3的5900端口(这里的localhost指的是host3,由于目标主机是相对host3而言的)。数据

  另外一个例子是经过host3的端口转发,ssh登陆host2。端口

$ ssh -L 9001:host2:22 host3

  这时,只要ssh登陆本机的9001端口,就至关于登陆host2了。di

$ ssh -p 9001 localhost

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

相关文章
相关标签/搜索