开源ssh web终端gateone
GateOne 是一款使用 HTML5 技术编写的网页版 SSH 终端模拟器。基于现代的 HTML5 技术,无需任何浏览器插件、支持多个 SSH 进程、可以嵌入到其他任意应用程序中、支持使用 JavaScript,Python 甚至纯 CSS 编写的插件、支持 SSH 进程副本,打开多个进程而无需重复输入密码、 支持各种服务器端的日志功能,支持 Keberos-based 单点登录甚至活动目录、 支持操作日志记录,具有操作记录回放功能。
上图上半部分为默认的界面,点击上面的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 + 文件名的方式查看,该命令执行后会回放之前的操作记录。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/gateone/5962.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.