通过网页实现SSH登录

 第一个wehssh软件没有实现实验目的,第二个实现了。

第一次听说webssh,这是朋友刚进公司他们头让他做的,我在网上查了下配置webssh的资料,这一方面的文档还真是少,现在整理在下面。

首先说明下需求:前端有一台web服务器,后端有一台linux服务器,现在要使用浏览器访问前端的web服务器来用ssh登录到后端linux机器上。

[root@localhost webssh]$ wget http://web-shell.googlecode.com/files/WebShell-0.9.6.zip

[root@localhost webssh]$ unzip WebShell-0.9.6.zip

[root@localhost webssh]$ cd WebShell-0.9.6

[root@localhost WebShell-0.9.6]$ ./make_certificate.sh

[tanxi@localhost WebShell-0.9.6]$ ./webshell.py --ssl-disable &

这时,你可以在浏览器上输入localhost:8022,就能使用webssh了。但是我们想通过80端口进入使用ssh服务怎么办呢?那么,现在就需要配置反向代理了。

在apache的配置文件http.conf中添加

ProxyPass /webshell/ http://localhost:8022/

ProxyPassReverse /webshell/ http://localhost:8022/

这是启用apache的反向代理功能,如果你的apache没有加载相应模块是不能用的,必须先要加载相应的模块

[root@localhost proxy]$ pwd

/usr/local/src/httpd-2.2.20/modules/proxy

[root@localhost proxy]$ /usr/local/apache2/bin/apxs -c -i -a mod_proxy.c   mod_proxy_http.c   mod_proxy_connect.c   mod_proxy_ftp.c   proxy_util.c

说明:-i 安装, -c 编译指定模块 -a激活模块

注意:这里mod_proxy.c和proxy_util.c两个模块要一起加载,不然等会儿启动apache时会报下面的错误:

[root@localhost modules]$ /etc/apachectl restart

httpd: Syntax error on line 102 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_proxy.so into server: /usr/local/apache2/modules/mod_proxy.so: undefined symbol: ap_proxy_lb_workers

好了,现在可以直接访问http://10.229.11.22/webshell了,可是我发现返回过来的页面与访问http://127.0.0.1:8022不一样。

现在使用nginx做反向代理,配置文件给出一部分

[root@localhost conf]# vim nginx.conf

server {

        listen       80;

        server_name  127.0.0.1;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            proxy_pass  http://127.0.0.1:8022;

            proxy_redirect off;

            proxy_set_header        X-Real-IP       $remote_addr;

            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        }

[root@localhost conf]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

然后访问http://10.229.11.22,这次页面返回正确了,但是输入登录信息后发现网页反映超慢,完全用不了,不知道是怎么回事。

 

 

 

 

 

 

 

 

 

 

    现在换一个软件来做webssh,这次用的是Anyterm。首先去网站下载Anyterm,网站是http://anyterm.org,可以用svn也可以直接下载,这里推荐用svn。

[root@localhost~]svn co http://svn.anyterm.org/anyterm/tags/releases/1.1/1.1.29/ anyterm-1.1.29 anyterm-1.1.29

[root@localhost~]$ cd anyterm-1.1.29

[root@localhost anyterm-1.1.29]$ cp 1.1.29/ /home/tanxi/ -r

[root@localhost anyterm-1.1.29]$ su - tanxi

[tanxi@localhost~]$ cd 1.1.29

[tanxi@localhost anyterm-1.1.29]$ cd 1.1.29/

[tanxi@localhost 1.1.29]$ ls

anytermd.1  build      common.mk  libpbe     LICENSE   README   src

browser     CHANGELOG  contrib    libpbe.mk  Makefile  scripts

在make之前,你得先明白一件事,Anyterm使用了一些boost c++的库函数,不过在make的时候你只需要它的头文件就行了,推荐使用1.34.1以上版本boost。下载网站:www.boost.org,我使用的是1.48.0版本。由于我们只需要boost的头文件,所以我们把下载的boost_1_48_0.tar.gz文件解压,然后把boost文件夹复制到/usr/include/下(gcc会在这个目录下寻找库文件)

注意:不要使用root编译安装,使用其他账户,这里用tanxi

[root@localhost ~]$ tar zxvf boost_1_48_0.tar.gz

[root@localhost ~]$ cd boost_1_48_0

[root@localhost boost_1_48_0]$ ls

boost            boost.css      bootstrap.sh  index.html  libs             rst.css

boost-build.jam  boost.png      doc           INSTALL     LICENSE_1_0.txt  status

boostcpp.jam     bootstrap.bat  index.htm     Jamtanxi     more             tools

[root@localhost boost_1_48_0]$ cp -r boost /usr/include/

现在可以开始安装软件了,1.1.29版本的Anyterm只需要make就行了,不用再make install

[tanxi@localhost 1.1.29]$ make 

make的时候报错:

(.text._ZN3pbe15atomic_post_decIiEET_RVS1_S1_[int pbe::atomic_post_dec<int>(int volatile&, int)]+0x14): undefined reference to '__sync_fetch_and_sub_4'
collect2: ld returned 1 exit status
make[1]: *** [anytermd] Error 1
make[1]: Leaving directory '/home/ngim/anyterm-1.1.29/build
make: *** [anytermd] Error 2

出现这个错误是因为编译的时候产生的代码是给老式的cpu机器使用的,而现在libgcc不支持它,所以更改编译信息

[tanxi@localhost 1.1.29]$ vim common.mk

GCC_FLAGS=-pthread改为GCC_FLAGS=-pthread -march=i686

然后把刚才的编译产生的.o文件删除

[tanxi@localhost 1.1.29]$ cd build/

[tanxi@localhost build]$ rm -f *.o

[tanxi@localhost 1.1.29]$ make

编译安装完成后启动服务

[tanxi@localhost 1.1.29]$ ./anytermd -p 7777 --local-only

Address already in use while bind()

现在可以访问http://localhost:7777

我们用apache做反向代理,这样能加强安全性。配置apache的反向代理步骤前面有

[tanxi@localhost conf]$ pwd

/usr/local/apache2/conf

[tanxi@localhost conf]$ vim httpd.conf

ProxyPass /webssh  http://127.0.0.1:7777

ProxyPassReverse /webssh  http://127.0.0.1:7777

现在可以访问http://ip/webssh

你可能感兴趣的:(职场,网页,休闲)