侧边栏壁纸
博主头像
AI研究僧

hycj89@163.com

  • 累计撰写 1,899 篇文章
  • 累计创建 179 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

使用浏览器通过ssh访问服务器

AI研究僧
2022-07-08 / 0 评论 / 0 点赞 / 834 阅读 / 415 字

需求说明

日前因为工作,需要在浏览器网页上访问服务器终端进行操作,这种情况在使用阿里云等平台时经常会使用到,最近项目需要实现这个功能,就做了一番调研。偶然间发现jupyterlab平台上就有这个功能
image

环境说明

操作系统:ubuntu18
python版本:3.6

详情

本次测试的软件是webssh
这个软件是一个简单的 Web 应用程序,用于ssh 客户端连接到 ssh 服务器的工具。它是用 Python 编写的,基于 tornado、paramiko 和 xterm.js。
其中的xterm.js是前端用于展示终端页面的项目,也是本项目的一个核心。

安装

pip install webssh

启动

wssh --address='hostip' --port=8000

实现原理

±--------+ http ±-------+ ssh ±----------+
| browser | <====> | webssh | <=> | ssh server|
±--------+ websocket ±-------+ ssh ±----------+

从上看出 webssh启动后作为web服务运行着,浏览器发起http请求得到如下页面
image-1657263585485
填入要连接的服务器对应信息后点击connect,在network中可以看到响应信息
image-1657263703158
其中的id用来创建websocket连接
image-1657263736694
此时就已经进入了终端页面如下所示:
image-1657263773140

这种模式的本质是ssh连接,要求服务端的sshd服务必须正常开启,且能访问,否则是无法通过该方式进入服务器的。

更多使用详见 https://github.com/huashengdun/webssh

需要提一下的是xterm.js是众多软件实现该功能的基础软件,如vscode、jupyterlab等,更多的可以看github上

博主关闭了所有页面的评论