当前位置: 首页 > news >正文

ttyd:安全地通过网络共享您的 Linux 终端

ttyd 是一个轻量级的开源命令行工具,它使您能够通过网页浏览器共享您的 Linux 终端会话。通过使用 WebSocketsttyd 允许您远程与终端进行交互,就像您直接在机器上一样,这使得它非常适合远程管理、团队协作或教育演示。

该工具封装了一个终端应用程序(如bash),并提供了一个简单的、基于网络的界面,任何现代浏览器都可以访问。由于其安装简便以及可定制的安全功能,如基本身份验证和SSL,ttyd 是一个强大的解决方案,能够通过网络访问和共享终端会话。

使用案例:

  • 通过任何带浏览器的设备远程访问Linux系统。
  • 允许多个用户与同一个终端互动。
  • 实时演示命令和工作流程,适用于教学或研讨会。

本文将深入探讨在基于Linux的系统上安装、配置和使用ttyd

在Linux上安装ttyd

在Linux系统上安装ttyd的过程很简单,但确实需要一些依赖。以下是基于Debian系统(例如Ubuntu)的安装步骤。其他发行版的过程会稍有不同,但核心步骤保持相似。

首先,确保您的系统已安装所需的构建工具和库。

sudo apt update
sudo apt install -y git cmake build-essential libjson-c-dev libwebsockets-dev

接下来,从GitHub克隆官方ttyd代码库:

git clone https://github.com/tsl0922/ttyd.git
cd ttyd

一旦克隆了代码库,创建一个构建目录,运行cmake,并编译源代码:

mkdir build
cd build
cmake ..
make
sudo make install

Linux中ttyd的基本用法

安装后,可以通过在终端中提供一个 shell 命令作为参数,直接运行 ttyd

ttyd bash

这将启动一个默认端口(7681)上的网络服务器,并通过以下 URL 提供对 bash shell 的访问。

http://localhost:7681

在网页浏览器中打开此地址,您将看到一个交互式终端,可以在其中运行 shell 命令。

除了启动bash,你还可以在终端中运行其他命令或应用程序。例如,你可以在终端中运行top(一个系统监视工具):

ttyd top

通过网络共享终端

默认情况下,ttyd 绑定到 localhost,这使得它只能从本地机器访问。要允许远程用户连接,您需要将 ttyd 绑定到公共或私有 IP 地址。

将 ttyd 绑定到特定 IP 地址

您可以指定 ttyd 应绑定的端口和地址:

ttyd -p 8080 bash

在这种情况下,ttyd 将在端口 8080 上监听。如果您需要从同一网络上的另一台机器访问它,可以使用该机器的本地 IP 地址:

http://local-ip:8080

要查找您的本地 IP 地址,请使用以下 ip 命令:

ip a

如果您需要在互联网上公开ttyd,请确保您的UFW防火墙允许所选端口的入站流量,并在必要时通过路由器转发该端口。

保护您的 ttyd 网络终端

如果未正确配置,将终端暴露在网上可能会引入重大安全风险。以下是使用ttyd时应采取的一些基本安全措施:

1. 在ttyd上启用密码保护

默认情况下,ttyd 不需要身份验证。为了增加安全性,请使用 -c 选项指定访问的用户名和密码。

ttyd -p 8080 -c user:password bash

这将提示用户输入用户密码凭据,然后才会授予对终端的访问权限。

2. 为ttyd启用SSL

为了加密客户端(浏览器)与服务器之间的通信,强烈建议启用SSL。您可以使用--ssl标志运行SSLttyd。但是,您需要有效的SSL证书:

ttyd --ssl -p 443 bash

在这种情况下,您需要提供您的 SSL 证书和私钥的路径(通过 --ssl-cert--ssl-key 选项)。

3. 限制 ttyd 网络暴露

与其将 ttyd 暴露于公共互联网,不如考虑使用 VPN 或设置反向代理(如 Nginx)来增加额外的安全层。

在安全至关重要的环境中,建议在私有IP上运行ttyd或通过防火墙规则限制访问。

ttyd 的高级用法

ttyd 提供了多个命令行选项来微调其行为。一些最有用的选项如下:

  • -p <port> – 设置网络服务器监听的端口。
  • -c <用户:密码> – 启用具有指定用户名和密码的基本身份验证。
  • –ssl – 启用SSL/TLS以进行安全通信.
  • -t <终端> – 设置特定于终端的设置,例如字体大小和颜色。
结论

ttyd 是一个多功能且高效的工具,用于通过网络共享终端会话,适用于远程管理、协作和教育目的,且设置简单。

然而,在生产环境中使用时,采取适当的安全措施,如身份验证和SSL加密,是至关重要的。

🔥运维干货分享

  • 系统集成项目管理师备考经验分享
  • 系统规划与管理师备考经验分享
  • 软考高级系统架构设计师备考学习资料
  • 软考中级数据库系统工程师学习资料
  • 软考高级网络规划设计师备考学习资料
  • Kubernetes CKA认证学习资料分享
  • AI大模型学习资料合集
  • 免费文档翻译工具(支持word、pdf、ppt、excel)
  • PuTTY中文版安装包
  • MobaXterm中文版安装包
  • pinginfoview网络诊断工具中文版
  • Xshell、Xsftp、Xmanager中文版安装包
  • Typora简单易用的Markdown编辑器
  • Window进程监控工具,能自动重启进程和卡死检测
  • Spring 源码学习资料分享
  • 毕业设计高质量毕业答辩 PPT 模板分享
  • IT行业工程师面试简历模板分享
http://www.xdnf.cn/news/978769.html

相关文章:

  • Cpp 知识3
  • github action推送-构建准备步骤获取私有dockerhub镜像仓库镜像的一系列错误尝试
  • Solidity 开发从入门到精通:语法特性与实战指南
  • 在Linux下使用vscode使用交叉编译工具链的gdb对core文件进行堆栈、变量查看
  • Ubuntu下编译安装DLib的GPU版本并实现人脸检测和人脸关键点检测
  • “十五五”时期智慧城市赋能全国一体化数据市场建设:战略路径与政策建议[ 注:本建议基于公开政策文件与行业实践研究,数据引用截至2025年6月11日。]
  • 商品中心—3.商品可采可补可售的技术文档下
  • 前端面试宝典---事件循环面试题
  • 小白学Pinia状态管理
  • STM32G DMA串口发送接收
  • Linux开发工具之VsCode(Filezila、MobaXterm、Vim三合一)
  • 【笔记】NVIDIA AI Workbench 中安装 cuDNN 9.10.2
  • 每日Prompt:人像写真
  • 内存泄漏系列专题分析之二十:camx swap内存泄漏实例分析
  • Babylon.js引擎(二)
  • 【Chipyard】 conda 环境安装与使用
  • k8s在节点上加污点
  • k8s 部署服务常见错误原因
  • Windows 安装 Maven
  • 1Panel 部署 OpenResty + Redis 实现 IP 动态封禁教程
  • 软考 系统架构设计师系列知识点之杂项集萃(87)
  • Visual Studio 2022 运行提示:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
  • jsoncpp ubuntu编译问题
  • Proof of Talk专访CertiK联创顾荣辉:全周期安全方案护航Web3生态
  • Cilium动手实验室: 精通之旅---22.Cilium Traffic Optimization
  • OA协同平台有哪些功能?OA协同办公软件平台如何选择?
  • 腾讯开源 ovCompose 跨平台框架:实现一次跨三端(Android/iOS/鸿蒙)
  • 网络请求与本地存储:Axios 与 AsyncStorage 在 React Native 中的应用
  • 升级 Ubuntu Linux 内核的几种不同方法
  • 同步与异步:软件工程中的时空艺术与实践智慧-以蜻蜓hr人才系统举例-优雅草卓伊凡