有时候用公共电脑,或者在没有安装 putty、xshell 之类的终端的电脑上访问或展示服务器上的一些资料数据,甚至是在运维平台开发中想要嵌入 WebTerminal 功能,于是找到了这个项目——基于 Web 的 Linux 终端 webSSH。

webSSH 是 Python 语言写的一个基于 tornado 和 paramiko 包的 web 应用,它可以作为一个 ssh 终端连接你的服务器。webSSH 主要特点:

  • 支持 SSH 密码认证,包括空密码;
  • 支持 SSH 公钥认证,包括 DSA RSA ECDSA Ed25519 keys;
  • 支持 Encrypted keys;
  • 支持全屏终端,且终端窗口可调整大小;
  • 自动检测系统默认编码;
  • 适用于 Python 2.7-3.6。

1. 安装

pip install webssh

2. 启动

webssh 安装完成,我们可以通过 wssh 命令进行启动:

$ wssh
[I 180627 11:14:55 settings:67] WarningPolicy
[I 180627 11:14:55 main:33] Listening on 127.0.0.1:8888

wssh 默认启用 localhost 的 8888 端口开启服务,我们也可以通过监听 0.0.0.0 来使用本地的 iP 并指定服务端口:

$ wssh --address='0.0.0.0' --port=8000
[I 180627 11:07:05 settings:67] WarningPolicy
[I 180627 11:07:05 main:33] Listening on 0.0.0.0:8000

这时候,在浏览器打开 http://ip:8000,输入登陆信息,登陆 web 终端:

3. 参数

wssh 的一些主要参数如下:

#配置监听地址与服务端口
wssh --address='0.0.0.0' --port=8000 #配置缺少主机密钥策略
wssh --policy=reject #配置日志级别
wssh --logging=debug #配置保存日志到指定文件
wssh --log-file-prefix=main.log #更多参数说明
wssh --help

4. Nginx

wssh 可以使用 Nginx 作为后台代理,以及启用 SSL 访问,参考配置文件:

location / {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
proxy_read_timeout 300;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
}
  • 使用 Nginx 作为后台代理,并启用 SSL 访问,可以避免你的 ssh 证书被暴露。此外,你的浏览器和 Web 服务器之间的通信将使用安全的 Websockets 进行加密。
  • 尝试使用 reject policy 作为缺少主机密钥时的策略,以及经过验证的 known_hosts,可以防止中间人的攻击。其思路是,webssh 会依次检查系统主机密钥文件("~/.ssh/known_hosts")和应用程序主机密钥文件("./known_hosts"),如果 ssh 服务器的主机名(hostname)没有被发现或者密钥不匹配,连接将被中止。

5. 参考资料

基于 Web 的 Linux 终端 WebTerminal的更多相关文章

  1. pyDash:一个基于 web 的 Linux 性能监测工具

    pyDash 是一个轻量且基于 web 的 Linux 性能监测工具,它是用 Python 和 Django 加上 Chart.js 来写的.经测试,在下面这些主流 Linux 发行版上可运行:Cen ...

  2. shellinabox基于web浏览器的终端模拟器

    1. Shellinabox介绍 Shellinabox 是一个利用 Ajax 技术构建的基于 Web 浏览器的远程终端模拟器,也就是说安装了该软件之后,服务器端不需要开启 ssh服务,通过 Web  ...

  3. Terminix:基于 GTK3 的平铺式 Linux 终端模拟器

    现在,你可以很容易的找到大量的 Linux 终端模拟器,每一个都可以给用户留下深刻的印象.但是,很多时候,我们会很难根据我们的喜好来找到一款心仪的日常使用的终端模拟器.这篇文章中,我们将会推荐一款叫做 ...

  4. [TimLinux] asciinema Linux终端录制工具嵌入私有web中

    yum install asciinema https://github.com/asciinema/asciinema-player # 下载asciinema-player.css, asciin ...

  5. Linux 基于WEB开源的系统管理工具webmin

    Webmin是目前功能最强大的基于Web的Unix系统管理工具.管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作.目前Webmin支持绝大多数的Unix系统,这些系统除了各种版本的l ...

  6. Ubuntu 18.04 Linux上安装Etherpad,基于Web的实时协作编辑器

    介绍 Etherpad是一个开源的,基于Web的实时协作编辑器(http://www.0834nanke.com) 它允许多个人使用他们的Web浏览器同时编辑文档. 它还提供了一些很酷的功能,如富文本 ...

  7. Linux终端回话记录和回放工具 - asciinema使用总结

    目前linux终端回放工具常见的就是asciinema和script了, 这两种工具都有那种类似于视频回放的效果.虽然这样做的代价是录制过程中需要占用一定的cpu资源以及录制后可能会因为视频文件太大而 ...

  8. 在Linux终端使用W3M浏览器下载文件

    在Linux终端使用W3M浏览器下载文件 W3M 是3个基于Linux系统命令行的WEB网站浏览工具(w3m/Links/Lynx) 对于需要验证cookie 和来源的页面,比如163的超大附件,直接 ...

  9. 谁需要GUI?快看Linux 终端生存之道

    完全在 Linux 终端中生存并不容易,但这绝对是可行的. 处理常见功能的最佳 Linux shell 应用 你是否曾想像过完完全全在 Linux 终端里生存?没有图形桌面,没有现代的 GUI 软件, ...

  10. 基于pygtk的linux有道词典

    基于pygtk的linux有道词典 一.桌面词典设计 想把Linux用作桌面系统,其中一部分障碍就是Linux上没有像有道一样简单易用的词典.其实我们完全可以自己开发一款桌面词典, 而且开发一款桌面词 ...

随机推荐

  1. java数组排序及查找方法

    前言 在上一篇文章中,壹哥给大家讲解了数组的扩容.缩容及拷贝方式.接下来在今天的文章中,会给大家讲解更重要的数组排序及查找方法.今天的内容会有点难,希望你不要因此而退缩,挺过这一关,你会向上突破的! ...

  2. Windows无线连接路由器成功但无法网

    Windows10连接Wifi成功,任务栏无线图标没有感叹号,但是无法连接到网络,重启电脑才能连接上,手机连接这个网络却可以一直联通.本人使用的是intel 9260无线网卡,经过测试,我通过这个方法 ...

  3. Win10系统总是锁屏关闭屏幕该怎么办?

    Win10系统总是锁屏关闭屏幕该怎么办? 转目前发现最早之帖,自脚本之家:https://www.jb51.net/os/win10/398451.html   使用Win10系统很长时间了,最近发现 ...

  4. PVE虚拟系统的安装

        上期有说到,会出一些具体的安装过程以及掉进去的坑.这集我就说一说PVE系统的安装. As mentioned in the previous issue, there will be some ...

  5. python文字转语音库及使用方法

    作者:陈哲链接:https://www.zhihu.com/question/473797102/answer/2019063801来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  6. PHP__采集类__Snoopy

    Snoopy                                                  目录 了解Snoopy.1 功能:...1 下载Snoopy:...2 Snoopy常用 ...

  7. Android Studio 样式和主题背景

    样式和主题背景 转载自   Styles and Themes  |  Android Developers 借助 Android 中的样式和主题背景,您可以将应用设计的细节与界面的结构和行为分开,其 ...

  8. JDK8到JDK17有哪些吸引人的新特性?

    作者:京东零售 刘一达 前言 2006年之后SUN公司决定将JDK进行开源,从此成立了OpenJDK组织进行JDK代码管理.任何人都可以获取该源码,并通过源码构建一个发行版发布到网络上.但是需要一个组 ...

  9. RTCP常见报文格式(申请I帧/RR/SR/SDES)

    本篇文章是基于对RTCP基本协议有所了解情况下,进行说明,因为RTCP在丢包重传(ARQ)方面需要使用 到,具体可以查看RTCP相关rfc文档或者博客.所以本篇文章主要是从抓包报文角度来看RTCP协议 ...

  10. 在unity中制作live2d参数的AnimationClip[简单随笔]

    假定:已经成功导入模型.相关文档参考:https://github.com/gtf35/live2d_unity_sdk_chinese_document(人力翻译版的Live2d SDK文档) 全部 ...