GateOne 是一款使用 HTML5 技术编写的网页版 SSH 终端模拟器。基于现代的 HTML5 技术,无需任何浏览器插件、支持多个 SSH 进程、可以嵌入到其他任意应用程序中、支持使用 JavaScript,Python 甚至纯 CSS 编写的插件、支持 SSH 进程副本,打开多个进程而无需重复输入密码、 支持各种服务器端的日志功能,支持 Keberos-based 单点登录甚至活动目录、 支持操作日志记录,具有操作记录回放功能。

gateone
gateone

上图上半部分为默认的界面,点击上面的ssh连接图标后可以跳出下半部分让连接的操作,可以按上面的格式进行输入需要连接的主机。

一、安装

安装相关依赖

1yum -y install python-tornado
2pip install futures
3pip install html5lib

注:依赖确认,可以通过git clone后,运行python run_gateone.py查看有什么报错一般就是缺什么包。

gateone安装

1git clone https://github.com/liftoff/GateOne
2cd GateOne/
3python setup.py install

默认安装完成后执行程序为/usr/bin/gateone,其会在systemctl 下产生相关服务。可以通过如下命令启动和配置开机自启动。

1systemctl start gateone
2systemctl enable gateone

二、配置

使用gateone –help可以看下gateone支持的配置参数。其默认配置为/etc/gateone/conf.d/目录下(该目录下默认是空的,执行gateone启动后会生成三个文件):

1[root@localhost conf.d]# ls
210server.conf  20authentication.conf  50terminal.conf
3[root@localhost conf.d]# pwd
4/etc/gateone/conf.d

其配置文件为json格式。

服务的默认配置是使用的https,可以通过将disable_ssl 设置为true关闭https(设置为http)。

url_prefix 默认为/,即 https://IP:端口访问主机,如果需要和nginx进行整合,一般可以配置该配置,比如设置url_prefix值为”/gateone/”。

origins配置为指定允许连接的IP地址,当配置nginx反向代理时,需要将nginx的地址加入该地址中,不然在设置完url_prefix后,不设置该项会出现/ws 404的错误。

我使用的server.conf配置如下:

 1[root@localhost conf.d]# more 10server.conf
 2// This is Gate One's main settings file.
 3{
 4    // "gateone" server-wide settings fall under "*"
 5    "*": {
 6        "gateone": { // These settings apply to all of Gate One
 7            "address": "",
 8            "ca_certs": null,
 9            "cache_dir": "/tmp/gateone_cache",
10            "certificate": "/etc/gateone/ssl/certificate.pem",
11            "cookie_secret": "OGY5Nzk2NTY1NzIzNGI2ZDk3MmM3N2M4YTVlYzk3MDBmM",
12            "debug": false,
13            "disable_ssl": true,  //关闭https
14            "embedded": false,
15            "enable_unix_socket": false,
16            "gid": "0",
17            "https_redirect": false,
18            "js_init": "",
19            "keyfile": "/etc/gateone/ssl/keyfile.pem",
20            "locale": "en_US",
21            "log_file_max_size": 100000000,
22            "log_file_num_backups": 10,
23            "log_file_prefix": "/var/log/gateone/gateone.log",
24            "log_to_stderr": null,
25            "logging": "info",
26            "multiprocessing_workers": null,
27            "origins": ["localhost", "127.0.0.1", "localhost.localdomain", "localhost4", "localhost4.localdomain4", "localhost6", "localhost6.localdomain6","www.361way.com"]
28,
29            "pid_file": "/var/run/gateone.pid",
30            "port": 10443,  //修改默认端口
31            "session_dir": "/tmp/gateone",
32            "session_timeout": "5d",
33            "syslog_facility": "daemon",
34            "uid": "0",
35            "unix_socket_mode": "0600",
36            "unix_socket_path": "/tmp/gateone.sock",
37            "url_prefix": "/gate/",   //配合nginx反向代理
38            "user_dir": "/var/lib/gateone/users",
39            "user_logs_max_age": "30d"
40        }
41    }
42}

三、nginx反向代理

nginx反向代理配置如下:

 1location /gate/ {
 2    auth_basic "Private Property";
 3    auth_basic_user_file  /App/nginx/conf/.htpasswd_gateone;
 4    proxy_pass http://10.212.52.14:10443 ;
 5    proxy_redirect off;
 6    proxy_pass_header Server;
 7    proxy_set_header Host $http_host;
 8    proxy_set_header X-Real-IP $http_address;
 9    proxy_set_header X-Scheme $scheme;
10    proxy_http_version 1.1;
11    proxy_set_header Upgrade $http_upgrade;
12    proxy_set_header Connection "upgrade";
13}

其中认证文件使用htpasswd命令生成(httpd-tools包内):

1htpasswd -c  .htpasswd_gateone gateone

四、日志回放

logviewer.py 用于操作记录回放,

1[root@localhost logs]# find / -name logviewer.py
2/tmp/GateOne/gateone/applications/terminal/logviewer.py
3/tmp/GateOne/build/lib/gateone/applications/terminal/logviewer.py
4/usr/lib/python2.7/site-packages/gateone-1.2.0-py2.7.egg/gateone/applications/terminal/logviewer.py

其对应的日志文件位置为:/var/lib/gateone/users/ANONYMOUS/logs 。该日志文件内容直接是使用more less这类命令是看不了的,需要使用logviewer.py + 文件名的方式查看,该命令执行后会回放之前的操作记录。