通过SSH访问服务器的service
by Robin Lu on Feb.21, 2008, about maintenance, monit, ssh
产品服务器上的一些服务,比如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了。

同样的方法适用于很多服务,简便,又最大限度的保证了安全性。
3 Comments for this entry
1 Trackback or Pingback for this entry
-
关于搭建网站服务器的一些建议 - 石锅拌饭 - 互联网 Mac & 软件开发
November 25th, 2008 on 1:10 pm[...] 这个话题能写一本书。我这只讲一个原则,就是能关掉的端口就关掉。一个网站只需要打开两个端口,一个给http,一个给ssh。上线前用nmap扫一遍,看有没有漏开的端口。 ssh也不要用缺省端口,并且禁止密码登录,只打开PubKeyAuthentication。ssh是个很万能的东西,你可以通过它访问防火墙内的端口,上传文件,运行命令,干什么都够了。 [...]
November 25th, 2008 on 3:14 pm
ssh -L2000:localhost:2812 username@yourserver.com 是否应该为:
ssh -L2000:yourserver.com:2812 username@yourserver.com
November 25th, 2008 on 4:07 pm
在这种情况,两个是一样的。
这个localhost是从yourserver.com这台机器上看出去的localhost,其实就是yourserver.com这台机器。只要可以,建议用localhost代替yourserver.com,从TCP连接的角度,这样在你的服务器上,走的是loopback interface,即安全,又节约。
当然,如果你是要通过yourserver.com连接内网的另一台机器,就需要提供那台机器的地址了。
November 25th, 2008 on 4:12 pm
受教,刚才没看仔细man。