石锅拌饭

通过SSH访问服务器的service

by Robin Lu on Feb.21, 2008, about , ,

产品服务器上的一些服务,比如memcached、Monit Service Manager、database等等,它们的端口往往是被封锁在防火墙内,不可以从外部访问的。有时候为了维护方便,我们希望能够远程访问这些服务,打开防火墙允许这些端口显然不是最好的方式,其实可以用SSH建立一个tunnel,通过这个隧道远程访问这些服务。

以Monit Service Manager为例。比如我们在产品服务器yourserver.com上设置好了monit,并且打开了httpd方式的Monit Service Manager,设置为只允许本地访问,使用缺省端口2812:

set httpd port 2812 address localhost 
    allow localhost

登录到产品服务器访问这个服务显然不实际,从远程访问这个服务,用HTTP Authentication不够安全,SSL配置起来又稍显繁琐。我们可以利用SSH,只用下面一条命令,建立一个从本地2000端口到产品服务器yourserver.com 2812端口的一个通道:

ssh -L2000:localhost:2812 username@yourserver.com

运行完后,就可以通过http://localhost:2000直接访问产品服务器上的Monit Service Manager了。

Monit

同样的方法适用于很多服务,简便,又最大限度的保证了安全性。

:, ,

3 Comments for this entry

  • 美金

    ssh -L2000:localhost:2812 username@yourserver.com 是否应该为:
    ssh -L2000:yourserver.com:2812 username@yourserver.com

  • Robin Lu

    在这种情况,两个是一样的。
    这个localhost是从yourserver.com这台机器上看出去的localhost,其实就是yourserver.com这台机器。只要可以,建议用localhost代替yourserver.com,从TCP连接的角度,这样在你的服务器上,走的是loopback interface,即安全,又节约。
    当然,如果你是要通过yourserver.com连接内网的另一台机器,就需要提供那台机器的地址了。

  • 美金

    受教,刚才没看仔细man。

1 Trackback or Pingback for this entry

Archives

Browse by tags