# sshwifty汉化 **Repository Path**: kesally/sshwifty ## Basic Information - **Project Name**: sshwifty汉化 - **Description**: 汉化版sshwifty Fork form https://github.com/niruix/sshwifty - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-26 - **Last Updated**: 2023-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sshwifty Web SSH & Telnet Client **Fork form https://github.com/niruix/sshwifty 由[Kesally](https://gitee.com/kesally)汉化** ## Demo [Demo地址](https://ssh.mapleleaves.cn "Demo地址") **Sshwifty是为Web制作的SSH和Telnet连接器。** 可以部署在您的计算机或服务器上,为任何兼容(标准)网络浏览器。 ![Web Interface](Screenshot.png) ## 安装 ### 二进制 已编译的二进制文件可以在页面的[release]部分找到。 请注意,这些二进制文件是由自动进程生成的, 这个项目的作者不会验证它们是否有效。你必须尝试 风险自负。 ### 通过Docker 如果您的机器上安装了[Docker],您可以使用我们预先构建的Docker镜像 通过执行以下命令: ``` $ docker run --detach \ --restart always \ --publish 8182:8182 \ --name sshwifty \ niruix/sshwifty:latest ``` 当需要TLS并且您不想设置Docker卷时,可以使用 `SSHWIFTY_DOCKER_TSCERT`和`SSHWIFTY_DOCKER_TSCERTKEY`环境变量 要将凭据文件导入容器并自动应用它们: ``` $ openssl 请求\ -newkey rsa:4096 -nodes -keyout domain.key -x509 -days 90 -out domain.crt $ docker run --detach \ --restart always \ --publish 8182:8182 \ --env SSHWIFTY_DOCKER_TLSCERT="$(cat domain.crt)" \ --env SSHWIFTY_DOCKER_TLSCERTKEY="$(cat domain.key)" \ --name sshwifty \ niruix/sshwifty:latest ``` “domain.crt”和“domain.key”必须是有效的TLS证书和密钥文件 位于执行“docker run”命令的同一台机器上 [docker]: https://www.docker.com ### 从源代码编译(如果您是开发人员,则建议使用) 需要以下工具才能从源代码构建软件: - `git` to download the source code - `node` and `npm` to build front-end application - `go` to build back-end application 要启动生成过程,请执行: ``` $ git clone https://gitee.com/kesally/sshwifty $ cd sshwifty $ npm install $ npm run build ``` 完成后,您可以在current内部找到新生成的“sshwifty”二进制文件工作目录。 注意:“Dockerfile”包含此软件的整个构建过程。 当您遇到任何与编译/编译相关的问题时,请参阅它。 ## 配置 Sshwifty可以通过文件或环境变量进行配置。 默认情况下,配置加载程序将尝试从默认路径加载文件 首先,当失败时,将使用环境变量。 您也可以通过设置`SSHWIFTY_CONFIG来指定自己的配置文件` 启动软件之前的环境变量。例如: ``` $ SSHWIFTY_CONFIG=./sshwifty.conf.json ./sshwifty ``` 这样,Sshwifty将尝试从文件加载配置 `/sshwifty.conf.json`,并且从不访问其他环境变量。 ### 配置文件 以下是配置文件的所有选项: ``` { //HTTP主机。保持为空以接受来自所有主机的请求,否则,仅允许指定的主机访问 “HostName”:“localhost”, //Web界面访问密码。设置为空以允许公共访问 //web界面(通过身份验证页面) “SharedKey”:“WEB_ACCESS_PASSWORD”, //远程拨号超时。这限制了后端可以花费的时间 //以连接到远程主机。最大超时将由 //服务器配置(ReadTimeout)。 //(以秒为单位) “DialTimeout”:10, //Socks5代理。设置后,Sshwifty后端将尝试通过远程连接 //指定的代理 “Socks5”:“localhost:1080”, //Socks5服务器的用户名。需要时请设置 “Socks5User”:“”, //Socks5服务器的密码。需要时请设置 “Socks5Password”:“”, //如果是HTTP服务器,您可以设置多个服务器在不同的服务器上提供服务 //端口 "Servers":[ { //此服务器将侦听哪个本地网络接口 "ListenInterface":“0.0.0.0”, //此服务器将侦听哪个本地网络端口 "ListenPort":8182, //初始请求超时。HTTP握手必须在内完成 //这次 //(以秒为单位) “InitialTimeout”(初始超时):3, //连接在后端服务器之前可以保持空闲多长时间 //断开客户端连接 //(以秒为单位) "ReadTimeout":60, //服务器将等待多长时间,直到客户端连接准备好 //接收新数据。如果超过此超时,则连接将 //关闭。 //(以秒为单位) "WriteTimeout":60, //内部回显请求之间的间隔 //(以秒为单位) "HeartbeatTimeout":20, //每次请求之间的强制延迟 //(以毫秒为单位) "ReadDelay":10, //每次写入之间的强制延迟 //(以毫秒为单位) "WriteDelay":10, //TLS证书文件的路径。设置为空 //TLS证书密钥文件的路径。设置为空以使用HTTP TLS证书密钥文件“:” }, { "ListenInterface": "0.0.0.0", "ListenPort": 8182, "InitialTimeout": 3, } ], //远程预设,操作员可以为用户定义几个预设,以便用户 //不必手动填写所有表单字段 // //预设将显示在连接器的“已知遥控器”选项卡中 //窗口 // //注意:如果您是 //通过环境变量配置您的Sshwifty。 // //警告:预设数据将在没有任何保护的情况下发送到用户客户端。 //不要在预设中添加任何机密信息。 // “预设”:[ { //预设的标题 "Title": "SDF.org Unix Shell", // Preset Types, i.e. Telnet, and SSH "Type": "SSH", // Target address and port "Host": "sdf.org:22", //表单字段和值,您必须手动验证其正确性 //字段值的 // //定义元字段将阻止用户在其 //连接器向导。如果您希望允许用户使用他们自己的设置, //保持字段未设置 // //Meta中的值启用了方案,并支持以下方案 //前缀: //-“literal://”:文本文本(默认值) //示例:literal://Data价值 //(最终值为“数据值”) //示例:literal://file:///tmp/afile //(最终值为“file:///tmp/afile“) //-“file://”:从给定文件加载元值。 //示例:file:///home/user/.ssh/private_key //(文件路径为/home/user/.ssh/private_key) //-“environment://”:从环境变量加载元值。 //示例:environment://PRIVATE_KEY_DATA //(目标环境变量的名称为 //私有密钥数据) // //Meta中的所有数据都在启动期间加载,不会更新 //甚至源已经被修改。 // "Meta":{ //预定义用户字段的数据 “用户”:“预先定义的用户名”, //预定义编码字段的数据。有效数据显示在 //页面 “编码”:“预定义编码”, //预定义密码字段的数据 “密码”:“预定义密码”, //预定义私钥字段的数据,应包含内容 //密钥文件的 “私钥”:“file:///home/user/.ssh/private_key”, //预定义身份验证字段的数据。有效值是什么 //显示在页面上(密码、私钥、无) “身份验证”:“密码”, //服务器公钥指纹的数据。你可以获得的价值 //指纹通过手动连接到具有Sshwifty的新SSH主机, //指纹将显示在指纹格式上 //第页。 “指纹”:“SHA256:bgO….” } }, { "Title": "Endpoint Telnet", "Type": "Telnet", "Host": "endpoint.vaguly.com:23", “元”:{ //预定义编码字段的数据。有效数据显示在 //页面 “编码”:“utf-8” } }, ], //仅允许预设遥控器,并拒绝连接到任何其他遥控器 //主机 // //注意:您只能通过配置来配置OnlyAllowPresetRemotes //文件。使用配置时不支持此选项 //环境变量 OnlyAllowPresetRemotes:false } ``` `sshwifty.conf.example.json是一个有效配置文件的示例。 ### 环境变量 有效的环境变量包括: ``` SSHWIFTY_HOSTNAME SSHWIFTY_SHAREDKEY SSHWIFTY_DIALTIMEOUT SSHWIFTY_SOCKS5 SSHWIFTY_SOCKS5_USER SSHWIFTY_SOCKS5_PASSWORD SSHWIFTY_LISTENPORT SSHWIFTY_INITIALTIMEOUT SSHWIFTY_READTIMEOUT SSHWIFTY_WRITETIMEOUT SSHWIFTY_HEARTBEATTIMEOUT SSHWIFTY_READDELAY SSHWIFTY_WRITEELAY SSHWIFTY_LISTENINTERFACE SSHWIFTY_TLSCERTIFICATEFILE SSHWIFTY_TLSCERTIFICATEKEYFILE SSHWIFTY_PRESETS SSHWIFTY_ONLYALLOWPRESETREMOTES ``` 它们所代表的选项对应于 配置文件。 注意:当您使用环境变量来配置Sshwifty时,只有一个 然后允许使用Sshwifty HTTP服务器。无法设置多个服务器 在这种配置方法下。如果需要在多个端口上提供服务,请使用 而是配置文件。 请注意:以下环境变量中的无效值将导致 在配置解析阶段要临时重置为默认值的值 without warning: ``` SSHWIFTY_DIALTIMEOUT SSHWIFTY_INITIALTIMEOUT SSHWIFTY_READTIMEOUT SSHWIFTY_WRITETIMEOUT SSHWIFTY_HEARTBEATTIMEOUT SSHWIFTY_READDELAY SSHWIFTY_WRITEELAY ``` ## 常见问题 ### 为什么软件会说“时差超出了操作限制”? 这种情况通常发生在客户端和/或服务器上的时钟未同步时超时。 请通过以下方式确保客户端和服务器上的时钟时间正确 将它们与NTP服务器重新同步,然后重新加载页面。 ### 为什么出现错误“TypeError:无法读取未定义的属性'importKey'” 这通常是因为您的web浏览器不支持WebCrypt API(例如 `window.ccrypto.intint`或`window.ccrupto`下的任何内容),或者支持已禁用。 如果您正在使用Google Chrome,请使用HTTPS连接Sshwifty。Chrome将 当连接不安全时,请禁用WebCrypt和许多其他API。 ### 我可以在诸如`https://my.domain/ssh`? 这个短篇小说是NO。Sshwifty是基于这样一个假设而设计的 作为给定主机名下的唯一服务运行,使web浏览器能够更好地强制执行他们的数据隔离规则。这一点非常重要,因为Sshwifty在本地保存用户数据。 但是,如果您真的想将Sshwifty放入子路径中,您可以通过利用Sshwifty后端接口和资产始终位于URL前缀“/shwifty”下。因此,您可以重定向或代理将这些请求发送到他们的新位置。 请记住,这样做真的很麻烦,而且作者不建议这样做 因此,如果您决定这样做,将不会提供任何支持。 ### 为什么我不能将自己的组合键添加到控制台工具栏? 预定义的组合键主要用于进行移动操作 以及解决一些热键冲突。但是,如果效率 你的第一个目标,请考虑使用一个软件/屏幕键盘 专门为终端设计的。 如果这还不够,可以通过蓝牙或OTA连接物理键盘 可能是一个更好的选择。通过这种方式,您可以像使用计算机控制台。 ## Credits -感谢[Rean Fortner](https://github.com/ryanfortner)用于语法修复 -感谢[Teak](https://github.com/Tweak4141)对于grammer修复程序 -感谢[CJendantix](https://github.com/CJendantix)语法错误和拼写错误修理 ## License 该项目的代码是根据AGPL授权的,详细信息请参见[LICENSE.md]。 本项目使用的第三方组件根据其各自的许可许可证。请参阅[DEPENDENCIES.md]了解有关此使用的依赖项的更多信息 项目并阅读其版权声明。 ## 贡献 这是一个业余爱好者的项目,这意味着我没有那么多时间投入其中,很抱歉 发布后(即您可以阅读此文件),此项目将进入维护状态,其中包括进行一些错误修复和安全保护 更新_然而,添加新功能并不是状态的一部分。 请不要发送任何拉取请求。如果你需要新的功能,fork,添加 独自一人,然后像自己的项目一样维护它。没那么难 带有一些Github功能。 (注意:源代码和文档被归类为bug,如果您发现任何错误,请报告它们。谢谢!) 感谢你的帮助,享受吧!