神器webssh学习笔记

神器webssh学习笔记简介项目主页 https github com huashengdun webssh 一个简单的 Web 应用程序 用作 ssh 客户端以连接到您的 ssh 服务器 它是用 Python 编写的 基于 tornado paramiko 和 xterm js 特征 支持 SSH 密码认证 包括空密码 支持 SSH 公钥认证 包括 DSARSAECDSAE 密钥 支持加密密钥 支持两因素身份验证 基于时间的一次性密码 支持全屏终端 终端窗口可调整大小 自动检测 ssh 服

在这里插入图片描述

简介

特征:

  • 支持SSH密码认证,包括空密码。
  • 支持 SSH 公钥认证,包括 DSA RSA ECDSA Ed25519 密钥。
  • 支持加密密钥。
  • 支持两因素身份验证(基于时间的一次性密码)。
  • 支持全屏终端。
  • 终端窗口可调整大小。
  • 自动检测 ssh 服务器的默认编码。
  • 支持现代浏览器,包括 Chrome、Firefox、Safari、Edge、Opera。

安装与使用

要求

Python 2.7/3.4+

快速开始

安装这个应用程序,运行命令 pip3 install webssh
启动一个网络服务器,运行命令 wssh
打开浏览器,导航到 127.0.0.1:8888
输入您的数据,提交表格。






自定义字体

要使用自定义字体,请将您的字体文件放在目录中webssh/static/css/fonts/并重新启动服务器。

然而这个webssh/static/css/fonts/目录我找了半天才找到。

有个小技巧。安装完成以后在次运行 pip3 install webssh 即可看到安装目录了。
如下:

$ pip3 install webssh [23:22:21] Requirement already satisfied: webssh in /usr/local/lib/python3.9/site-packages (1.5.3) Requirement already satisfied: paramiko>=2.3.1 in /usr/local/lib/python3.9/site-packages (from webssh) (2.7.2) Requirement already satisfied: tornado>=4.5.0 in /usr/local/lib/python3.9/site-packages (from webssh) (6.1) Requirement already satisfied: pynacl>=1.0.1 in /usr/local/lib/python3.9/site-packages (from paramiko>=2.3.1->webssh) (1.4.0) Requirement already satisfied: bcrypt>=3.1.3 in /usr/local/lib/python3.9/site-packages (from paramiko>=2.3.1->webssh) (3.2.0) Requirement already satisfied: cryptography>=2.5 in /usr/local/lib/python3.9/site-packages (from paramiko>=2.3.1->webssh) (3.4.7) Requirement already satisfied: six>=1.4.1 in /usr/local/lib/python3.9/site-packages (from bcrypt>=3.1.3->paramiko>=2.3.1->webssh) (1.16.0) Requirement already satisfied: cffi>=1.1 in /usr/local/lib/python3.9/site-packages (from bcrypt>=3.1.3->paramiko>=2.3.1->webssh) (1.14.5) Requirement already satisfied: pycparser in /usr/local/lib/python3.9/site-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko>=2.3.1->webssh) (2.20) 

那么我就到这个目录去找就行了。/usr/local/lib/python3.9/site-packages

我的电脑上最终找到存放字体的目录是:/usr/local/lib/python3.9/site-packages/webssh/static/css/fonts

因为我在vim中使用Hack Nerd Font字体,所以我把字体放进来。

我的路径如下:

itkey@ycmit: /usr/local/lib/python3.9/site-packages/webssh/static/css/fonts $ ls font.ttf 

然后重启wssh,然而在我的电脑上字体并没有变。我直接把电脑重启后,发现我的字体终于生效了。
在这里插入图片描述

服务后台运行

nohup wssh --address='127.0.0.1' --port=8888 --policy=reject > webssh.out 2>&1 & tail -f webssh.out 
RSA key fingerprint is SHA256:emsKYigxkpR1CUTyuEJIyXUkHpIuG/fQ8wPiM1IOlp0. RSA key fingerprint is MD5:43:dd:8d:c2:1c:29:f2:bd:68:c2:d8:f0:3b:b6:60:af. Are you sure you want to continue connecting (yes/no)? 

因为我把webssh当作一个跨平台的ssh工具使用的,所以我喜欢默认允许(yes),这样的安全性会降低,但是使用起来方便。--policy=autoadd

nohup wssh --address='127.0.0.1' --port=8888 --policy=autoadd > webssh.out 2>&1 & tail -f webssh.out 

插件冲突提醒

nginx中食用

直接映射到根目录

我的配置如下:

server { 
    listen 80; server_name ssh.xxxx.cn; # Nginx config example 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; } error_page 404 /404.html; location = /404.html { 
    } error_page 500 502 503 504 /50x.html; location = /50x.html { 
    } } 

映射虚拟目录

location /ssh/ { 
    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; } 

特别提醒:proxy_pass http://127.0.0.1:8888/; 这个端口后面的/斜杠不要少,否则会显示404.
查看了大量的文章后才找到解决办法。
最终对我有用的文章是:
https://github.com/quaggalinux/linux_webssh






浏览器console登录

每次都输入用户名密码登录,会显的比较麻烦。还有一种登录方式,就是在浏览器的console执行命令登录。写法如下:

// connect to your ssh server wssh.connect(hostname, port, username, password, privatekey, passphrase, totp); // pass an object to wssh.connect var opts = { 
    hostname: 'hostname', port: 'port', username: 'username', password: 'password', privatekey: 'the private key text', passphrase: 'passphrase', totp: 'totp' }; wssh.connect(opts); // without an argument, wssh will use the form data to connect wssh.connect(); // set a new encoding for client to use wssh.set_encoding(encoding); // reset encoding to use the default one wssh.reset_encoding(); // send a command to the server wssh.send('ls -l'); 

示例:

  1. 在浏览器中打开webssh的地址
  2. 以chrome为例,鼠标右击,菜单中选“检查”,切换到console页
    在这里插入图片描述

用户名密码登录

wssh.connect("127.0.0.1", 6003, "username", "password", null, null, null); 

这样就不用,每次都输入用户名密码了,一条命令搞定。

URL 传参登录

http://localhost:8888/?hostname=xx&username=yy&password=str_base64_encoded 
http://ssh.xxx.cn/?hostname=127.0.0.1&port=6003&username=用户名&password=base64加密后的 

ModuleNotFoundError: No module named ‘setuptools_rust‘

使用一段时间后体验

  • 非常强大,兼容性好,跨平台。有浏览器的地方就可以ssh,有ssh就可以为所欲为。
  • 字体支持很好,Hack Nerd Font完美支持,我在windows中找了很久可以完美支持Hack Nerd Font的ssh客户端软件至今没有找到。因为我在vim中大量使用这个字体,所以我现在在windows中甚至使用的就是webssh
  • 操作流畅度仅够用,在一些场景下会卡顿,比如:vim中多窗格时,窗格大写调整时会卡顿。快速移动光标时偶尔也会卡顿。流畅度比起传统的终端模拟器还是有非常明显的差距的。

总体来说还是很强的。我在云服务器上部署了一个,以后可以随时随地,只要是一个可以上网的设备,我就可以使用vim编程开发了。一个web 链接就是我的云电脑了。

总结

强!太强了!web版本的ssh竟然可以如此之强。远远超出我的想像!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203908.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午9:19
下一篇 2026年3月19日 下午9:19


相关推荐

  • 一比一还原axios源码(六)—— 配置化

    上一章我们完成了拦截器的代码实现,这一章我们来看看配置化是如何实现的。首先,按照惯例我们来看看axios的文档是怎么说的:首先我们可以可以通过axios上的defaults属性来配置api。我们可

    2022年3月25日
    49
  • 基于nsga2的多目标柔性车间调度问题matlab[通俗易懂]

    基于nsga2的多目标柔性车间调度问题matlab[通俗易懂]主函数:%主函数functionnsga2_schedulingclearall;clc;pop=200;%种群数量gen=10;%迭代次数pop_f=100;%父代种群数量data_mac;%载入车间设备信息data_pro;%载入待加工工件信息pro_matrix=[];%包含工序及目标函数值的决策矩阵mac_matrix=[];%包含设备染色体信息的决策矩阵fori=1:pop_

    2022年5月12日
    39
  • 宽字节注入详解_pba商业分析师含金量

    宽字节注入详解_pba商业分析师含金量尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范。但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如gbk,作为自己默认的编码类型。也有一些cms为了考虑老用户,所以出了gbk和utf-8两个版本。我们就以gbk字符编码为示范,拉开帷幕。gbk是一种多字符编码,具体定义自行百度。但有一个地方尤其要…

    2022年10月15日
    4
  • Android布局之表格布局[通俗易懂]

    Android布局之表格布局[通俗易懂]表格布局(Tablelayout) 简介:       Tablelayout类以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。     当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列。     当为View时,该View将独占一行。表格布局是以行和列的形式来对控件…

    2022年5月14日
    42
  • linux 文件句柄数查看命令_linux查看句柄数

    linux 文件句柄数查看命令_linux查看句柄数//查看系统支持最大文件句柄数cat/proc/sys/fs/file-max//三个值分别表示已分配文件句柄的数目、已分配未使用文件句柄的数目、文件句柄的最大数目cat/proc/sys/fs/file-nr//单个进程文件句柄限制ulimit-n//查看某个进程所占文件句柄//先通过ps获取进程idps|grep进程名//获取进程所占句柄ls-l/proc/进程id/fd…

    2022年10月17日
    4
  • 校园网络项目设计方案

    校园网络项目设计方案校园网络项目设计方案制作 80 组全体成员用户需求概述 1 北京市商业学校目前大约有师生 5000 多人 在办公环境中 需要组建网络来实现信息化办公 新办公室为同一楼层的平面办公环境 办公区内的水平布线系统已经具备 2 用户需求描述北京市商业学校内办公建设项目的要求是实现畅通 高效 安全 可扩展的办公网络 各部门共享各种资源 提高办公效率 网络系统运行必

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号