神器webssh学习笔记

2023-05-16

在这里插入图片描述

简介

项目主页:https://github.com/huashengdun/webssh
一个简单的 Web 应用程序,用作 ssh 客户端以连接到您的 ssh 服务器。它是用 Python 编写的,基于 tornado、paramiko 和 xterm.js。

特征:

  • 支持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字体,所以我把字体放进来。

单独的字体文件可以到这下载:

https://download.csdn.net/download/lxyoucan/15407613

我的路径如下:

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

参数–policy=reject拒绝未知的服务器。按我的理解就是连接一个新的服务器时,ssh会提示你是否允许连接,这个参数就是直接拒绝新的连接。这样比较安全。
类似与下面的选择直接选no

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

插件冲突提醒

如果你的浏览器安装了一些vim类的插件,比如:cvim
在这里插入图片描述
一定要对当前页面进行禁用,不然你会发现经常按一些按键无效。

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 {
     }
 }

映射虚拟目录

这样可以不配置域名的情况下,就可使用了。比如:http://www.xxx.cn/ssh/。
我在配置这个的时候遇到点小坑,老是显示404.
最终可用配置如下:

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 传参登录

有的朋友觉得上面的登录方式还是比较难受,操作起来比较麻烦,能不能有更快捷的方式呢?是的!
可以创建个url地址,添加到收藏夹中。这样可以实现不输入用户密码。当然这种方式相对来说不安全,如果被别人得到这个url地址,就麻烦了。在私有网络和私人电脑这可以这样用。

http://localhost:8888/?hostname=xx&username=yy&password=str_base64_encoded

这里的密码必须是base64加密后的。
可以使用在线加密工具http://tool.chinaz.com/Tools/Base64.aspx?jdfwkey=np1b4获取加密后的内容。
实例如下:

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

ModuleNotFoundError: No module named ‘setuptools_rust‘

解决办法见:
https://blog.csdn.net/lxyoucan/article/details/118784551

使用一段时间后体验

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

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

总结

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

美中不足的是,有一些我定义的快捷键无法正常使用,比如:Alt + Space 之类的。估计是浏览器不识别这种奇葩的快捷键吧。
Ctrl + b 之类的都是正常的。Ctrl + C也不行,这个快捷键我一般用作vim中Esc使用的。还是有一些遗憾的。但是不影响他的强大!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

神器webssh学习笔记 的相关文章

  • 黑苹果macOS Big Sur更新11.3后usb3.0无法使用解决办法

    现象 macOS Big Sur 11 2 usb都正常使用 xff0c 更新到macOS Big Sur 11 3后发现usb3 0无法使用了 xff0c usb2 0还是正常的 解决办法 修改配置文件 EFI OC config pli
  • React Native 学习笔记

    iOS模拟器切换软键盘 如果您使用的是iOS模拟器 xff0c 则可以连接硬件键盘 xff0c 并将其与 任何输入字段 这可以通过Shift 43 43 K切换到软键盘 输入法键盘遮挡问题解决 操作演示如上图 xff0c 解决问题关键代码如
  • linuxbrew安装pip3+ranger

    因为brew install ranger安装出来的ranger是基于python2的 xff0c nvim中无法使用rnvimr插件 所以需要使用pip3安装一下ranger 在centos7 中使用linuxbrew安装的python3
  • Expo使用隧道穿透远程开发记录

    expo启动项目默认是使用的端口是19000 而且expo自带一个免费的隧道穿透功能 但是这个免费的隧道穿透毕竟是国外的不稳定 既然官方都支持隧道穿透了 xff0c 自定义隧道应该也是可以的吧 xff01 如何能稳定远程开发呢 xff1f
  • vim中React JSX语法高亮插件vim-jsx-pretty

    项目地址 https github com MaxMEllon vim jsx pretty 安装方法 vim plug为例 xff0c vimrc加入 Plug span class token string 39 yuezk vim j
  • Error: ENOSPC: System limit for number of file watchers reached

    现象 RN开发使用expo创建项目遇到如下错误 Logs for your project will appear below Press Ctrl 43 C to exit node 18489 DEP0066 DeprecationWa
  • vmware中CentOS7使用NAT模式主机无法通过ip连接虚拟机(记录)

    背景 有客户遇到了个问题我帮其远程解决 xff0c 我把大概的解决思路记录一下 客户先遇到了个问题 xff1a vmware中CentOS7因为使用NAT模式无法上网 xff0c 所以一直使用桥接模式上网 使用桥接的模式虽然可以上网但是虚拟
  • Windows下oracle client安装exp导出imp导入表

    下载Windows 32位客户端 下载页面 xff1a https www oracle com cn database enterprise edition downloads oracle db11g win32 html 下载完成以后
  • kali新手入门教学(1)--安装后的配置

    第一次写博客 xff0c 可能经验不是很足 xff0c 有不到位的地方还请各位见谅 最近在自学kali 然后kali是一个更新较快的系统 xff0c 虽然网上教程也很多 xff0c 但有的可能过时了 xff0c 所以我就把我这段时间的经验分
  • CentOS7安装mysql8笔记

    全新安装MySQL的步骤 以下说明假定您尚未使用第三方分发的RPM软件包将MySQL安装在您的系统上 xff1b 实操记录 我仅在CentOS Linux release 7 9 2009 Core 下进行测试 xff0c 其他环境仅供参考
  • mysql数据库安装教程合集

    CentOS7安装mysql8笔记 https blog csdn net lxyoucan article details 116854446 archlinux使用docker运行mysql实例 https blog csdn net
  • CentOS7使用docker跑mysql8笔记

    什么是docker Docker 是一个开放源代码软件 xff0c 是一个开放平台 xff0c 用于开发应用 交付 xff08 shipping xff09 应用 运行应用 Docker允许用户将基础设施 xff08 Infrastruct
  • x509: certificate has expired or is not yet valid.

    CentOS7中使用docker运行报错如下 xff1a root 64 localhost sudo docker run hello world Unable to find image hello world latest local
  • archlinux配置Xfce+fcitx5中文输入法

    因为图形界面我用的相对比较少 xff0c 所以喜欢安装小巧一些的桌面管理器 Centos中我比较喜欢使用openbox xff0c 但在是archlinux不知道在openbox使用中文输入法 xff0c 搞了半天也没解决 xff0c 不想
  • vim自动关闭标签

    一行代码搞定 inoremap span class token operator lt span buffer span class token operator gt span span class token operator lt
  • vim中jsx语法高亮

    没安装高亮插件前 安装插件vim jsx pretty xff08 卡顿 xff09 安装插件 Plug span class token string 39 yuezk vim js 39 span Plug span class tok
  • vmware安装alpine linux

    alpinelinux之前都没听过 xff0c 后来因为termux和docker发现这个发布版本 对这个发行布的最大印象就是小 为什么要在vmware中安装alpine linux xff0c 因为它小哇 xff01 主要好奇它安装后到底
  • alpine安装oh my zsh

    今天在vmware中安装了alpine 第一件事情就想安装oh my zsh 毕竟用了就回不去的东西 vmware安装alpine linux https blog csdn net lxyoucan article details 117
  • alpine linux配置中文语言环境

    alpine默认是没有语言环境的 没有中文不舒服不说 有时可能还会遇到中文乱码 那就来尝试一下安装中文语言环境吧 xff01 检查语言环境 查看当前语言环境 span class token keyword echo span span c
  • kali新手入门教学(11)--ddos攻击

    DDOS 全名是 Distribution Denial of service 分布式拒绝服务攻击 xff0c 指借助于客户 服务器技术 xff0c 将多个计算机联合起来作为攻击平台 xff0c 对一个或多个目标发动 DoS 攻击 xff0

随机推荐

  • alpinelinux使用国内源

    alpinelinux默认的源实在太慢了 xff0c 那就切换成国内的镜像吧 xff01 我个人比较喜欢中科大的源 xff0c 快 xff0c 稳 xff01 中科大源 一般情况下 xff0c 将 etc apk repositories
  • alpine安装图形界面Xfce

    alpine安装图形界面Xfce xff0c 这个官方文档很细 xff1a https wiki alpinelinux org wiki Xfce Setup Prerequisites 我只是做个记录 xff0c 做个笔记好日后观看 s
  • alpine中使用linuxbrew会怎么样?

    之前我写的文章中已经提到了 xff0c 使用apk安装的软件包都没有中文 如果我在alpine中使用brew安装软件是不是就变相的解决了中文软件包的问题了呢 xff1f 但是使用alpine本身就是因为它小巧 xff0c 这样一来就忘记了初
  • RN踩坑‘await‘ expressions are only allowed within async functions and at the top levels of modules.

    以前很少在循环中执行ajax xff0c 今天突然遇到个场景用到 习惯使用map来遍历了 xff0c 结果在map中遍历无法使用await方法 一时有点懵 xff01 xff01 xff01 后来发现普通的for循环中可以遍历 虽然不清楚为
  • RN踩坑this.setState未生效

    出错代码 目标是修改this state citys为初始化城市 xff0c 但是发现并没有初始化成功 xff01 span class token keyword this span span class token punctuatio
  • macos下IDEA中svn每次都要输入密码

    有一次把brew卸载重新安装了 xff0c 导致svn也要重新安装 xff0c 重新安装完以后发现IDEA中每次打开使用svn就要输入一次密码 这样太麻烦了 现象 项目Value操作系统macOS Big Sur 11 3IDEAIntel
  • React Native天气预报APP

    expo扫码运行 或者复制下面地址 exp exp host 64 lxyoucan weather ts 效果展示 同时显示多个城市的天气情况 xff0c 并按温度进行排序 点击任何一个城市 xff0c 显示天气详情信息 项目地址 htt
  • 【挑战】手机Termux搭建React Native开发环境

    我这里选用alpine来做开发环境 xff0c 主要因为它体积小巧 xff0c 方便移植和分享 如果只是我自己使用的话 xff0c 我更喜欢使用ubuntu或者archlinux alpine做开发环境 xff0c 可能会遇到的问题就是中文
  • nodejs切换taobao源

    span class token comment 使用nrm工具切换淘宝源 span npx nrm use taobao span class token comment 如果之后需要切换回官方源可使用 span npx nrm use
  • Centos7 安装新版tmux

    Centos7安装出来的tmux版本是1 8 xff0c 有一些插件用不了 所以想升级一下 tmux V tmux span class token number 1 8 span 一键编译安装 全自动 xff0c 一条命令搞定下面手动做的
  • kali新手入门教学(15)--burpsuite安装&证书导入&字体调整

    第一步 xff0c 卸载kali自身的burpsuite kali自身卸载软件有两个命令 remove 卸载软件包 purge 卸载并清除软件包的配置 因为我们彻底不用了 xff0c 就直接purge span class token fu
  • macOS手动启动 Simulator(ios模拟器)

    使用expo做RN 开发 xff0c 有时需要启动Simulator来做调试 毕竟直接在电脑看 xff0c 比低头看真机舒服一些 我平时会使用xcode打开模拟器 xff0c 然后在手动打开expo 本身打开xcode就要等待 能不能直接命
  • RN开发iOS模拟器按⌃⌘Z没反应?

    在RN开发中Reload还是比较常用的 xff0c 小伙伴有没有遇到按快捷键没有反应的情况 xff1f 但是鼠标点击有用 鼠标点击就很不方便 xff0c 如何解决呢 xff1f 快捷键没反应 xff0c 于是我就怀疑是不是快捷键冲突了 xf
  • typescript错误检查Property ‘navigation‘ is missing in type ‘{}‘

    最近刚把一些react native 的项目转到typescript 一个typescript的菜鸟 我的过程仅供参考 xff0c 不一定是最好的解决办法 遇到问题如下 xff1a 错误信息 tsserver 2741 E Property
  • RN常用组件安装命令

    文章目录 Expo篇WebViewAsyncStoragereact native animatablereact native paperreact native root siblings 64 ant design react nat
  • Centos升级ruby

    CentOS7 安装的ruby默认版本是 xff1a ruby v span class token punctuation span 11 43 53 span class token punctuation span ruby 2 0
  • 设置iTerm2为默认终端

    虽然安装了iTerm2 xff0c 但是有一程序还是会调用系统自带的终端打开程序 如何解决呢 xff1f 设置方法如下 xff1a iTerm2 61 gt Make iTerm2 Default Term
  • ModuleNotFoundError: No module named ‘requests‘

    环境 macOS 11 4 明明已经执行了 xff1a pip3 span class token function install span requests 依然报错 这就让我想到电脑上好像有存在两个pip3 报错 xff1a impo
  • http隧道Neo-reGeorg使用笔记

    项目简介 https github com L codes Neo reGeorg Neo reGeorg 是一个旨在积极重构 reGeorg 的项目 xff0c 目的是 xff1a 提高 tunnel 连接安全性 提高可用性 xff0c
  • 神器webssh学习笔记

    简介 项目主页 xff1a https github com huashengdun webssh 一个简单的 Web 应用程序 xff0c 用作 ssh 客户端以连接到您的 ssh 服务器 它是用 Python 编写的 xff0c 基于