以前都是安装一个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访问一下 [url]http://localhost:8022[/url]
嗯,可以看到一个熟悉的login的登录提示符了.
由于ajaxterm默认只在localhost:8022端口监听,要想从远程访问还是需要进行一下改进
这里我们用Apache的代理站点功能来实现
apache有一个模块mod_proxy可以实现重定向
ProxyPass /term/ [url]http://localhost:8022/[/url]
ProxyPa***everse /term/ [url]http://localhost:8022/[/url]
通过上述语句就可以实现 [url]http://domain/term[/url]重定向到 [url]http://localhost:8022/[/url]
ProxyPa***everse /term/ [url]http://localhost:8022/[/url]
通过上述语句就可以实现 [url]http://domain/term[/url]重定向到 [url]http://localhost:8022/[/url]
这里不光可以重定向到本地,还可以指向其他地址.
为了安全,我们采用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
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
openssl rsa -in ssl.key -out ssl-nopass.key
编辑/etc/httpd/conf.d/ssl.conf
ServerName app119:443
SSLEngine On
SSLCertificateKeyFile ssl/ssl-nopass.key
SSLCertificateFile ssl/ssl.crt
ProxyRequests Off
Order deny,allow
Allow from all
ProxyPass /term/ [url]http://localhost:8022/[/url]
ProxyPa***everse /term/ [url]http://localhost:8022/[/url]
加入以上内容.如果ssl.conf存在重复的定义,需要先注释掉
Order deny,allow
Allow from all
ProxyPass /term/ [url]http://localhost:8022/[/url]
ProxyPa***everse /term/ [url]http://localhost:8022/[/url]
加入以上内容.如果ssl.conf存在重复的定义,需要先注释掉
比如默认的ssl.conf中就有SSLCertificateKeyFile
修改完成后httpd -t检查一下是否有语法错误
一切正常的话,service httpd restart
然后从浏览器里访问 [url]http://domainip/term/[/url]
看到ssh了.login一下,成功了