换台电脑就登不上服务器?用WebSSH把终端搬进浏览器

前言

做运维或者日常需要登录服务器干活的同学,应该对这种场景不陌生------

你本地电脑装着 PuTTY 或者 Terminal,配好了密钥,记住了 IP 和端口,结果有一天你换了一台设备,要么没装 SSH 客户端,要么密钥没同步过来,要么干脆就是网络隔离的电脑,根本装不了任何东西。你跟服务器之间就隔着一层"我明明知道它在那,但我碰不到它"的尴尬。

我自己遇到这种情况的次数已经多到有点烦了。最典型的一次是周末在家,服务器出了点问题需要紧急处理,但我的笔记本没装 SSH 工具,公司电脑又不在身边,最后只能远程指挥家人帮我开机、报屏幕内容,来来回回折腾了两个小时才搞定。那次之后我就开始琢磨,能不能有一套方案,让我只要有个浏览器就能连上服务器,不管在什么设备上。

后来就找到了 WebSSH 这条路。说白了,WebSSH 就是把一个 SSH 终端做成了网页,你打开浏览器输入地址,输入账号密码,就能直接操作服务器。不需要装任何客户端,不需要配置环境,换手机、换平板、蹭别人电脑都能用。配合内网穿透的话,在外面也能远程连接,不局限于在同一个局域网里。

具体用下来,核心好处有三个:第一是跨设备能力,打开网页就能用,Chromebook、平板、手机都没问题;第二是避免了每台设备都要重新配一遍 SSH 密钥的麻烦;第三是方便分享,你甚至可以生成一个带密码的链接让别人临时访问你的服务器,会话结束后关掉就行。

我用的方案是 webssh 配合 cpolar 内网穿透,整套跑在极空间上。极空间本身就是个私有 NAS 设备,跑的都是 Linux 环境,正好适合部署这些工具。整个安装配置过程大概花了我半小时,包括 cpolar 穿透和固定地址的配置。webssh 本身支持自定义背景色和字体,也支持通过 URL 参数实现免密登录,适合有一定定制需求的用户。局限在于:默认没有 HTTPS,需要自己加一层;另外匿名访问的安全性要看具体怎么配,生产环境建议加上认证。

下面说一下我在极空间上完整跑通的全流程,给有类似需求的朋友一个参考。适合的人群包括:运维工程师、后端开发者、有多台服务器需要经常远程管理的人,以及想在家里随便找台设备就能登服务器的场景。

1.在极空间部署前期准备

1.1ssh远程连接到极空间

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

没有ssh的小伙伴可以到cpolar官网参考这篇文章:

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

2.安装WebSSH

方式一:在线安装

通过pip安装webssh:

shell 复制代码
pip3 install webssh

方式二:离线安装

通过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)提示表示已经启动成功了!

访问wenssh

在浏览器中输入 http://极空间IP:8888 就能看到访问界面:

改变背景色和字体颜色

通过请求访问时,可以增加#fontcolor=black&bgcolor=white参数。例如访问http://ip:8888/#fontcolor=black&bgcolor=white ,结果如下:

通过get请求实现自动登录

访问http://ip:8888/?hostname=192.168.42.140&username=root&password=base64加密后的密码&port=端口

然而,大多数WebSSH服务默认只监听内网地址,无法从公网直接访问。

这时候,我们就需要一位"桥梁":内网穿透工具。

cpolar正是这样一款简单高效的内网穿透利器。它能将本地运行的 WebSSH 服务,安全地映射到公网可访问的 HTTPS 地址,无需公网 IP、无需路由器配置、无需复杂防火墙规则。

3.安装cpolar实现随时随地开发

3.1 什么是cpolar?

cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。

3.2 部署cpolar

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

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

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

shell 复制代码
sudo systemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

4.配置公网地址

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

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

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

访问成功。

5.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

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

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

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

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

点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

总结

这套方案跑通之后,"换设备就登不上去"这个问题算是从根本上解决了。现在我只要记得服务器地址和 WebSSH 的访问地址,不管在什么设备上都能直接操作,不用来回同步密钥,也不担心临时要用的时候身边没有趁手的工具。

回头看整个部署路径,webssh 本身装起来很快,五分钟不到就能跑起来;cpolar 穿透是标准的三步走------装服务、建隧道、配固定地址,总共二十分钟左右。真正花时间的地方是前期想清楚怎么配,比如要不要加认证、要不要开 HTTPS、域名怎么保留,这些想清楚了动起手来就很快。

有一点需要提一下:WebSSH 默认跑的是 HTTP,如果你要长期用,建议配一下 HTTPS 或者加上访问密码,暴露在公网的 HTTP 服务怎么说都有点风险。另外通过 URL 参数免密登录这个功能挺好用的,但密码会明文出现在链接里,建议用完就换掉,或者用 base64 简单混淆一下,至少别直接贴在网上。

开 HTTPS、域名怎么保留,这些想清楚了动起手来就很快。

有一点需要提一下:WebSSH 默认跑的是 HTTP,如果你要长期用,建议配一下 HTTPS 或者加上访问密码,暴露在公网的 HTTP 服务怎么说都有点风险。另外通过 URL 参数免密登录这个功能挺好用的,但密码会明文出现在链接里,建议用完就换掉,或者用 base64 简单混淆一下,至少别直接贴在网上。

总的来说,这套方案的灵活性很高,webssh 本身是开源的,cpolar 有免费额度,个人使用完全够了。如果你经常需要在不同地方登录服务器,又不想被客户端和环境绑死,可以试试这个思路。

相关推荐
楼田莉子2 小时前
仿muduo的高并发服务器——前置知识讲解和时间轮模块
服务器·开发语言·c++·后端·学习
janeysj2 小时前
docker-proxy实现原理
运维·docker·容器
小夏子_riotous2 小时前
Docker学习路径——5、容器数据卷
linux·运维·服务器·学习·docker·容器·云计算
do better myself2 小时前
网站服务器迁移问题总结
运维·服务器
hljqfl2 小时前
银河麒麟安装PDF虚拟打印机
linux·运维·pdf
IpdataCloud2 小时前
IP查询能查到什么?用IP查询工具理解隐私边界,安全配置网络出口
运维·服务器·tcp/ip·ip
workflower2 小时前
机器人城市应用-室外总坪清扫
运维·人工智能·机器人·集成测试·人机交互·软件需求
带鱼吃猫2 小时前
从优先级到调度效率:Linux O(1)调度算法的底层逻辑(含bitmap优化、活跃/过期队列机制)
linux·运维·服务器
Ssan PRIN2 小时前
RustDesk搭建公网中继服务器远控内网机器(完整版)
运维·服务器