注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 可扩展、高可用、负载均衡..
 帮助

ajaxterm 网页上的SSH


2007-11-07 17:21:35
 标签:Ajax ssh ajaxterm   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://coolerfeng.blog.51cto.com/133059/49556
      以前都是安装一个ssh客户端软件如putty,secrueCRT来访问远程的服务器.但是在某些情况下我们没有ssh客户端软件该如何呢(比如在网吧)
      这里我们有一个python写的程序,能够把ssh转换到http.从而让我们在浏览器中完成我们的远程操作.
     首先是下载ajaxterm这个软件.安装很简单
# ./configure
# make
# make install
 
在System V风格的发行版上会生成自启动脚本,如RH系列就在/etc/init.d/ajaxterm
启动很简单
 /etc/init.d/ajaxterm start
测试一下,如果有x-window,可以用firefox访问一下http://localhost:8022
嗯,可以看到一个熟悉的login的登录提示符了.
由于ajaxterm默认只在localhost:8022端口监听,要想从远程访问还是需要进行一下改进
这里我们用Apache的代理站点功能来实现
apache有一个模块mod_proxy可以实现重定向
       ProxyPass /term/ http://localhost:8022/
       ProxyPassReverse /term/ http://localhost:8022/
通过上述语句就可以实现http://domain/term重定向到http://localhost:8022/
这里不光可以重定向到本地,还可以指向其他地址.
为了安全,我们采用443端口来访问SSH,(80端口也能实现,但是HTTP协议采用明文传输,如果有人sniffer的话,搞不好你的服务器的密码之类的就被别人知道了.
     apache可以通过mod_ssl模块来支持https
如果是rpm安装的apache,通常都默认将mod_ssl模块编译出来了.查找一下/etc/httpd/modules/目录下是否有mod_ssl.so 然后查看一下/etc/httpd/conf/httpd.conf中是否载入了mod_ssl.so
LoadModoules ssl_modules mod_so.so
需要注意的是,apache的conf文件可以在多个地方,在httpd.conf某些行如果有
Include conf.d/*.conf这样的定义,表示将conf.d目录下的所有配置文件都导入.
RPM默认安装的apache就将ssl.conf单独放在conf.d中,因此接下来只需要修改这个文件就可以了.
如果从源码编译安装,是需要指定参数的,
要使用SSL,需要一个证书
 
我们首先要生成这个证书
rpm -qa | grep openssl
如果有了这个软件可以直接来生成证书,如果没有,需要做的事情就是源码编译安装
安装很简单
这里不多写了
生成私钥
openssl genrsa -des3 -out ssl.key 1024
用私钥生成需要签发的证书
openssl req -new -key ssl.key -out ssl.csr
把csr提交CA, 获得签名. openssl x509 -days 365 -req -in ssl.csr -signkey ssl.key -out ssl.crt
如果仅仅这样,当重启apache的时候需要手动输入私钥密码,因此我们要对私钥进行一下转换
转换密钥为无密码, 方便Apache的自动启动
   openssl rsa -in ssl.key -out ssl-nopass.key
 
编辑/etc/httpd/conf.d/ssl.conf
<VirtualHost *:443>
       ServerName app119:443
       SSLEngine On
       SSLCertificateKeyFile ssl/ssl-nopass.key
       SSLCertificateFile ssl/ssl.crt
       ProxyRequests Off
       <Proxy *>
               Order deny,allow
               Allow from all
       </Proxy>
       ProxyPass /term/ http://localhost:8022/
       ProxyPassReverse /term/ http://localhost:8022/
加入以上内容.如果ssl.conf存在重复的定义,需要先注释掉
比如默认的ssl.conf中就有SSLCertificateKeyFile
修改完成后httpd -t检查一下是否有语法错误
一切正常的话,service httpd restart
然后从浏览器里访问http://domainip/term/
看到ssh了.login一下,成功了

本文出自 “风吹云动” 博客,请务必保留此出处http://coolerfeng.blog.51cto.com/133059/49556





    文章评论
 
2007-11-07 17:25:09
抢个沙发.好东西耶.值得学习

2007-11-07 21:58:42
既然是好东西,大家一起学习

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: