不装 SSH 客户端也能连服务器:用 WebSSH 把终端搬进浏览器

不装 SSH 客户端也能连服务器:用 WebSSH 把终端搬进浏览器

前言

传统 SSH 客户端的优势一直很明确:成熟、直接、效率高。但它也依赖当前设备已经准备好终端、客户端和连接配置。换到一台临时电脑、平板,或者只是想快速从浏览器进入服务器时,这些前置条件就会变成额外步骤。

WebSSH 换了一种入口:SSH 连接仍然是 SSH,只是把操作界面搬进了浏览器。

这次文章实际部署的是 WebSSH。它运行在极空间上,本地通过 8888 端口提供网页;打开页面后,再填写目标主机、用户名、密码和端口建立 SSH 会话。原文还演示了终端配色参数,以及通过 GET 参数预填连接信息。

因此整篇文章可以拆成两个阶段:

  • 第一阶段:WebSSH 本地能不能正常启动,并在浏览器里提供 SSH 入口;
  • 第二阶段 :离开局域网以后,还能不能继续打开这个 8888 页面。

前者由 WebSSH 自己完成,后者再通过 cpolar 增加公网入口。这样职责始终清楚:WebSSH 负责浏览器中的 SSH 会话,cpolar 只负责让这个 Web 页面从外部网络可访问。

1.先准备极空间 SSH 环境

1.1ssh远程连接到极空间

  • 开启【SSH 服务】
  • 使用终端(Windows PowerShell / Mac Terminal)登录:
shell 复制代码
ssh root@IP

如果极空间还没有开启 SSH,原文给出的参考文章是:

《极空间别再吃灰了!开启SSH,秒变全能服务器! - cpolar 极点云官网》

2.安装 WebSSH

这里提供两种安装方式。无论选择在线安装还是源码安装,最终判断标准都一样:wssh 能正常启动,并监听 8888 端口。

方式一:在线安装

通过 pip 安装 WebSSH:

shell 复制代码
pip3 install webssh

方式二:源码安装

如果不走 pip 在线安装,也可以通过 Git 或离线包方式把源码下载到本地:

shell 复制代码
# 下载源码
git clone https://github.com/huashengdun/webssh.git
# 进入目录
cd webssh
# 安装wenssh
python setup.py install

启动 WebSSH

shell 复制代码
wssh

出现 [I 221111 11:26:57 main:39] Listening on :8888 (http) 提示后,说明 WebSSH 已经开始监听 8888 端口。

访问 WebSSH

接下来在浏览器中输入 http://极空间IP:8888 做页面验证。页面能打开以后,才说明"浏览器 SSH 入口"这一层真正可用:

调整背景色和字体颜色

WebSSH 还支持通过 URL 参数调整终端显示效果。例如原文使用 #fontcolor=black&bgcolor=white 修改字体和背景颜色:

通过 GET 请求预填连接信息

原文还给出了通过 GET 参数传入主机、用户名、密码和端口的访问方式:

到这里,WebSSH 本地使用已经成立。

如果只在同一个局域网里管理服务器,直接访问 极空间IP:8888 就够了。只有当当前设备离开家庭或办公网络以后,还希望继续打开这个网页终端,才需要解决公网访问。

下面再增加 cpolar。它不会改变 WebSSH 的 SSH 连接逻辑,只负责把本地 8888 Web 页面映射到公网。

3.安装 cpolar 补充外网访问

3.1 什么是cpolar?

在本文中,cpolar 的职责很明确:把已经运行在极空间上的 WebSSH 8888 页面提供到公网。

3.2 部署cpolar

开始之前,先确认 http://极空间IP:8888 在局域网内已经能正常打开。这样后面如果公网访问异常,可以把 WebSSH 本身和隧道问题分开排查。

以下按照原文步骤安装 cpolar:

使用一键脚本安装命令:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看 cpolar 服务状态:

shell 复制代码
sudo systemctl status cpolar

cpolar 安装并启动以后,通过主机 IP 加 9200 端口访问 Web 管理界面。登录账号后,后面的隧道配置都在这里完成。

打开浏览器访问本地 9200 端口,登录后即可管理隧道。

4.配置公网地址

这里先用随机域名做第一轮连通性验证,目标只是确认外部网络能不能正确打开 WebSSH 的 8888 页面。

  • 登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理------创建隧道:

    • 隧道名称:可自定义,本例使用了:webssh,注意不要与已有的隧道名称重复
    • 协议:http
    • 本地地址:8888
    • 域名类型:随机域名
    • 地区:选择China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚生成的公网地址。此时可以换到其他网络中的电脑或移动端设备进行访问测试。

WebSSH 页面能够通过公网地址打开,说明 8888 的远程访问链路已经打通。

5.保留固定公网地址

随机地址适合测试。如果准备长期把 WebSSH 作为远程管理入口,再配置固定二级子域名更方便保存和使用。

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是webssh,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理------隧道列表,找到所要配置的隧道,点击右侧的编辑

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

更新完成后,打开在线隧道列表,可以看到原来的随机公网地址已经变成保留的二级子域名形式。

最后,再使用配置后的固定公网地址访问 WebSSH。页面能够正常打开,说明二级子域名已经绑定到当前隧道,后续可以继续使用这个固定入口。

总结

这篇文章真正完成的是一条很清晰的 WebSSH 使用链:

  • 先在极空间上安装并启动 WebSSH;
  • 通过 8888 端口确认浏览器页面可用;
  • 根据需要调整终端显示参数,或者通过 GET 参数预填连接信息;
  • 如果只在局域网使用,到这里已经完成;
  • 需要异地访问时,再通过 cpolar8888 Web 页面映射到公网;
  • 随机域名先验证连通性,固定二级子域名再作为长期入口。

和传统 SSH 客户端相比,WebSSH 的主要变化不是 SSH 协议本身,而是连接入口从本地客户端变成了浏览器。这对于临时设备、跨平台访问或不方便安装客户端的环境会更灵活。

整套结构可以分成两层:

  • WebSSH:负责在浏览器里建立 SSH 会话;
  • cpolar:只负责让本地 WebSSH 页面从外部网络可访问。

还需要注意一点:一旦把 WebSSH 页面开放到公网,它就不再只是一个局域网工具。公网地址、登录凭据和相关访问参数都应该按远程管理入口来对待,不应随意公开。

原文结尾提到了 ttyd、HTTPS 和访问控制,但正文实际部署的是 WebSSH,也没有单独演示 ttyd 安装流程。因此这一版总结只保留正文真正完成的 WebSSH 部署与公网访问链,避免结尾突然切到另一个工具。

相关推荐
Bug修理工Bubble1 小时前
Optional:为什么一个 String? 能让代码少掉很多崩溃?
前端
巴勒个啦2 小时前
2026 年 CSS 选型真相:我用 Tailwind v4 + 原生新特性重构了一个组件库
前端·angular.js
LEE2 小时前
别再堆 AGENTS.md 了:前端团队如何把 AI Coding 做成一套可执行的工程系统
前端·后端
三十而立洋2 小时前
JavaScript 原型链:一张图讲透「对象继承」的底层真相
前端·javascript
工具派2 小时前
markdown在线编辑器怎么选?渲染管线的3个坑和md转PDF跑版记录
前端·后端
平头哥技术团队2 小时前
Day 13 | 调 line-height 和 margin:三处间距让名片页脱离模板感
开发语言·前端·javascript·学习·html5
一位正在转型AI全栈的前端工程师2 小时前
AI 全栈学习之旅 -Week 9:什么是AI Agent?从Function Calling到LangGraph
前端·python
计算机魔术师2 小时前
Claude Opus 5 干不过人类客服?23.9% 的通过率撕开 Agent 真相
前端
cjy0001112 小时前
2026年9月零基础能听懂国内 FDE 讲师的课吗?
大数据·前端·人工智能·fde