在 Linux 服务器上安装 Web SSH - SSHwifty 的部署和使用
作者:Mintimate
博客:https://www.mintimate.cn
Mintimate's Blog,只为与你分享
SSH
SSH,其全称是Secure Shell(安全外壳协议)是一种加密的网络传输协议。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令,即:远程Terminal登录。
但是,这样进行服务器远程登录的操作,在服务器端安装SSH情况下受限于:
- 需要SSH客户端(如:Xshell、Putty等)
Windows10以后,powershell支持SSH函数库,但是Windwos10以前的Windows版本以及iOS、Android等移动端,就需要下载第三方软件来支持SSH。那么,如何免去客户端的安装,直接用上SSH呢?
答案是:安装Web SSH
本次就搭建搭建SSHwifty来实现Web SSH的效果,SSHwifty官方项目地址:
- https://github.com/nirui/sshwifty
成功后效果:
- 官方Demo:https://sshwifty.herokuapp.com/
前期准备
首先,需要有一台Linux服务器设备。本次教程使用腾讯云轻量应用服务器的Debian镜像,其他推荐的镜像为:
Linux软件基础
Linux端的软件基础也很简单:
- 提前安装SSH
如果你使用的腾讯云的Linux镜像,是默认有安装SSH的,其他设备,如:树莓派Debian镜像,也是有安装。但是如果是官方Deepin镜像、Arch等客户端Linux,默认一般没有安装:
# Debian
sudo apt install openssh-server
# 启动SSH进程
systemctl start ssh.service
# 开机启动SSH
systemctl enable ssh.service
宝塔面板
安装宝塔面板,主要是方便配置域名解析和Nginx反向代理。如果你只是局域网内设备使用,或者对Nginx配置很熟悉,亦或者无反向代理需求,可以不用安装。
另外,如果你正好想买腾讯云的服务器,可以选择腾讯云宝塔定制镜像:
SSHwifty
SSHwifty是专为Web设计的SSH和Telnet连接器。它可以部署在您的计算机或服务器上,以为任何兼容(标准)的Web浏览器提供SSH和Telnet访问接口。
通俗地说:安装SSHwifty可以实现Web端SSH控制服务器。官方(https://github.com/nirui/sshwifty)给了三种方法:
- 二进制文件手动部署
- Docker容器版本部署
- 使用NPM对源码进行编译部署
Docker版本过于简单(主要是安装Docker容器麻烦),NPM源码编译过于复杂,本次就介绍常规方法:进制文件手动部署。
安装
SSHwifty的常规部署安装很简单,首先根据自己Linux的CPU架构选择适合自己的SSHwifty版本:
比如:我使用腾讯云轻量应用服务器,基于x86_x64架构,所以我选择:sshwifty_0.2.11-beta-release_linux_amd64.tar.gz。
# 下载到服务器
wget 'https://github.com/nirui/sshwifty/releases/download/untagged-c7204ec41cb180a0101d/sshwifty_0.2.11-beta-release_linux_amd64.tar.gz'
# 解压文件
tar -xf sshwifty_0.2.11-beta-release_linux_amd64.tar.gz
到此,SSHwifty就已经安装完成,接下来我们配置运行即可。
配置
首先我们需要配置一下,先看看默认配置:
其实,这个默认配置也挺好。我们就改监听IP
然后即可使用:
# 重命名sshwifty.conf.example.json为sshwifty.conf.json
mv sshwifty.conf.example.json sshwifty.conf.json
之后,就可以开始运行了。
运行SSHwifty
运行也很简单:
./sshwifty_linux_amd64
之后,使用IP:8182即可在浏览器访问:
其中,密码为你sshwifty.conf.json文件内:
常见问题
1.Unable to authenticate: TypeError: Cannot read property 'importKey' of undefined
这个问题,主要是新的Chrome和Chromium内核浏览器,已经不支持非SSL的加密传输在SSH上,所以解决方法:
- 将sshwifty的 URL改为https
而如果你是腾讯云轻量应用服务器且有域名,可以看看接下来的宝塔Nginx反向代理部分。
2.Unable to connect to the Sshwifty backend server: WebSocket Error (1006)
这个一般出现在成功反向代理sshwifty后,需要连接本地终端时:
解决方法很简单,在Nginx的配置文件内,添加以下两段,然后保存退出。执行nginx -s reload命令。
map $http_upgrade $connection_upgrade { default upgrade; '' close; }
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade;
如果你使用的是宝塔Nginx反向代理,可以看看接下来的宝塔Nginx反向代理部分。
宝塔反向代理
如果不用SSL,其实对于SSH来说相对不安全,浏览器甚至会直接无法使用sshwifty;所以,我们使用Nginx进行反方代理和SSL证书的安装。
本文使用宝塔来安装Nginx,域名使用腾讯云DNS服务。
域名已经提前解析到服务器。
申请SSL证书
腾讯云服务器,直接到DNS 解析 DNSPod控制台即可申请SSL证书:
申请好后,下载即可。其他用户,可以去申请免费的SSL:
- Let’s Encrypt SSL 证书
- TrutAsia SSL证书
宝塔添加证书
回到宝塔内,我们添加网站。域名为解析到服务器的域名,并添加SSL证书:
设置反向代理
之后,我们设置反向代理:
之后,单单这样还是不可以使用的,我们需要添加参数:
map $http_upgrade $connection_upgrade { default upgrade; '' close; }
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
浏览器访问
之后,不出意外,就可以浏览器首页https://域名
形式访问Web SSH了:
而且没有1006错误:
总结
SSHwifty这样的轻量级实用工具就已经搭建好了,其实腾讯云自带的Web SSH也挺好用。但是总归要先登录腾讯云账号才可以登录Web SSH,期待有更好的APP可以出现。
不过,Web SSH和Xshell这样的软件,在传输层上,Web SSH是没有Xshell、Terminal和Powershell直接使用SSH传输来得安全,如果对安全有极高要求,建议还是不要使用WebSSH,以免因为网络监听,而泄露服务器密码。
推荐阅读
-
使用 winzip 生成的扩展名为 -ZIP 的压缩文件通常使用".zip "扩展名,其 MIME 格式为 application/zip。(推荐学习:phpstorm) 目前,ZIP 格式属于几种主流压缩格式之一,其竞争对手包括 RAR 格式和开源的 7z 格式。 从性能对比来看,RAR 和 7z 格式比 ZIP 格式压缩率更高,而 7-Zip 由于提供免费压缩工具而逐渐在更多领域得到应用。 微软从 Windows ME 操作系统开始就内置了对 zip 格式的支持,即使用户没有在电脑上安装解压软件,也可以打开和创建 zip 格式的压缩文件,OS X 和流行的 Linux 操作系统也提供了类似的 zip 格式支持。 因此,如果要在网络上传播和分发文件,zip 格式往往是最常见的选择。
-
在 Linux 上安装和使用句子转换器的 all-MiniLM-L6-v2 模型。
-
iCloud 切换区域,中国区保留 appStore(更新)--自 2018 年 2 月 28 日起,中国区 iCloud 由云上贵州管理 苹果公司发布的公告 https://support.apple.com/zh-cn/HT208352 关键词 关键部分 受影响的 iCloud 账户:国家或地区设置为 "中国 "的 Apple ID。 iCloud 包含的服务照片、邮件、通讯录、日历、提醒事项、备忘、书签、钱包、钥匙串、云备份、云驱动器、应用程序数据 新条款和条件: 同意仅出于本协议允许的目的并在中国法律允许的范围内使用服务。 云桂洲在提供服务时应使用合理的技能并尽职尽责,但在适用法律允许的最大范围内,我们不保证或担保您通过本服务存储或访问的任何内容不会意外损坏、崩溃、丢失或根据本协议的条款被删除,如果发生此类损坏、崩溃、丢失或删除,我们不承担任何责任。您应自行负责维护您的信息和数据的适当备份。 Apple 和云上贵州有权访问您存储在服务中的所有数据,包括有权根据适用法律相互之间共享、交换和披露所有用户数据(包括内容)。 本协议的解释、效力和履行应适用*法律。对于因本协议引起的或与本协议有关的任何争议,云桂洲和您同意提交中国国际经济贸易仲裁委员会(CIETAC)根据提交仲裁时有效的法律在北京进行具有约束力的仲裁。 由云桂洲管理,用户选择: 停用; ID 到地区; 受 iCloud(由云桂洲运营)条款和条件约束 首先,我想说说我对数据安全的看法。 当我在朋友圈发布通知时,有些朋友回复说国外的操作并没有多安全,或者国外的安全只是相对于国外而言的等等。首先,我非常感谢这些朋友,这让我反思什么是数据安全。以下观点均属个人观点: 国外的月亮一定比国内圆? 这是一个根深蒂固的问题,只要有人说国外的东西比国内好,就会有人嘲笑崇洋媚外。我觉得我们在某些方面应该向国外学习,比如搜索引擎和版权问题。打开百度搜索 "数据安全",第一行肯定是广告。打开谷歌搜索 "数据安全",第一条就是 "数据安全_百度百科" .....各种版权问题大家都明白,支持正版,但不仅客户一心想找免费破解,就连作者也往往没有保护自己劳动成果或产品的想法。但从另一个层面来说,国内的发展和安全,甩国外几条街。没有说哪里好,哪里不好,辩证地去学习更好。 国外也有别有用心的数据泄露,谈何安全? 从加密解密的角度看,自古以来就没有绝对安全的加密,只有相对安全的做法。苹果的棱镜门、微软的 cpu 漏洞,各种参差不齐的被破解案例 ....是的,这的确是一个很好的论据,但凡事都不能只看一面,当年苹果面对FBI破解手机的要求,几经论证,苹果还是拒绝破解。这点拿到国内,只要上面的文件传达下去,还有企业敢说不吗?还敢说不吗? 关于这次iCloud数据迁移个人看法? 把数据迁移到贵州的云端,相当于把手机的所有数据都存储在贵州的云端服务器上。也许访问数据的速度会快很多,但我会把我的iCloud区放到美国,因为我不想数据存在云上贵州后经常接到莫名其妙的电话或短信,更不想因为乱用国外服务器而被请去喝茶。iCloud一个ID,即从中国账号转到美国区,主要用于数据存在美国服务器上。appStore一个ID,除了注册一个中国ID外,专门用来下载应用用,因为国外ID不支持酷狗和网易云等应用。麻烦的是,用了新的 appStore ID 后,当前的应用还得重新下载安装,因为旧的应用 ID 与新的应用 ID 不兼容,安装不了。最后,iCloud迁移后,国内用户使用美国服务器,估计要 "扶墙 "了。 专业步骤: 首先,进行appleID设置,这是前提条件,否则无法选择转移区域! 取消 appleID 的双重认证 取消家庭共享选项 二、窗口下载并安装 icloud 3.0 版
-
排除在 CentOS 7.x 上安装和部署 SeaTunnel Web 时遇到的问题。
-
在 Linux 服务器上安装 Web SSH - SSHwifty 的部署和使用
-
在阿里云 ecs 服务器上安装和部署 node.js 的步骤
-
如何使用Hitool和TTL在Hi3798海思机顶盒上备份和烧录海纳思Linux服务器系统的固件
-
在Linux上设置和调整Web服务器的步骤
-
在CentOS 7上,学习如何安装和配置阿里云服务器ECS上的LAMP(Linux+Apache+MySQL+PHP)。