#ssh #chat #ssh-server #ssh-chat

app chatd

chatd 是一个实时通信的 SSH 服务器实现,它提供聊天室服务而不是 shell,并支持通过 SSH 进行加密消息传递

2 个不稳定版本

0.2.0 2024年8月15日
0.1.0 2024年7月9日

#10#chat

Download history 93/week @ 2024-07-05 13/week @ 2024-07-12 2/week @ 2024-07-26 55/week @ 2024-08-09

57 每月下载次数

自定义许可

390KB
10K SLoC

Latest Version License: AGPL v3 Build Status Coverage Status

chatd

实时通信的 SSH 服务器实现,它提供聊天室服务而不是 shell,并支持通过 SSH 进行加密消息传递。

致谢

本项目深受 shazow/ssh-chat 的影响。

核心功能

  • 公开和私有的点对点对话
  • 颜色主题
  • 内置聊天命令
  • Emacs 风格的键绑定
  • 命令历史记录
  • 可配置的 motd(每日消息)
  • 命令自动完成
  • 从 ENV 加载用户配置覆盖
  • 自动检测和处理空闲用户

安全和控制

  • 仅允许授权用户连接的选项
  • 消息速率限制以防止垃圾邮件
  • 操作员的特殊命令(如 /kick/ban/mute 等)

下载发布版本

chatd 的预构建二进制文件适用于各种平台,包括 Windows (x86_64/ARM64)、Linux (32 位/x86_64/ARM64) 和 macOS (x86_64/ARM64),可通过 GitHub 发布 获取。这些二进制文件会随着每个标记提交自动生成。

如果您是已安装 Cargo 的 Rust 开发者,您可以跳过下载,直接从 crates.io 安装守护进程:cargo install chatd

编译/开发

要从源代码构建守护进程,请按照以下步骤操作

$ git clone [email protected]:unrenamed/chatd.git
$ cd chatd
$ make release
$ ./target/release/chatd --version
chatd 0.2.0

对于持续开发,您可以使用 Makefile 执行常见任务,或者如果缺少所需的 make 规则,可以直接调用 cargo <command>

此外,如果您更喜欢容器化开发和部署,我们已提供 Dockerfilecompose.yaml 以轻松在 Docker 容器中运行 chatd

快速入门

chatd is an implementation of an SSH server for real-time communication that
serves a chat room instead of a shell and provides encrypted messaging over
SSH.

Usage: chatd [OPTIONS]

Options:
      --port <PORT>       Port to listen on [default: 22]
  -i, --identity <KEY>    Private key to identify server with. Defaults to a temporary ed25519 key
      --oplist <FILE>     Optional file of public keys who are operators
      --whitelist <FILE>  Optional file of public keys who are allowed to connect
      --motd <FILE>       Optional file with a message of the day or welcome message
      --log <FILE>        Write chat log to this file
  -d, --debug...          Turn debugging information on
  -h, --help              Print help
  -V, --version           Print version

现在,运行

$ chatd

这将运行监听默认端口的守护进程,并创建一个临时的ed25519密钥来标识服务器。对于生产用途,您应该绑定一个生成的密钥,如下所示

$ chatd -i ~/.ssh/id_dsa

环境变量

由于chatd(这是故意的)中缺乏用户配置的持久存储,每次用户连接时都需要重新应用他们的设置。这可能会非常不方便,不是吗?

使用环境变量可以解决这个问题。

CHATD_THEME

此变量允许您设置会话的主题。您不必通过运行/theme hacker手动配置它,可以这样做:

$ ssh -o SetEnv "CHATD_THEME=hacker" username@<your_server_hostname>

CHATD_TIMESTAMP

此变量启用在每条接收到的消息旁边记录日期时间或时间前缀。您不必手动运行/timestamp datetime,可以在连接之前设置它:

$ ssh -o SetEnv "CHATD_TIMESTAMP=datetime" username@<your_server_hostname>

如果您觉得在ssh命令中设置额外的选项很麻烦,您可以使用SSH客户端支持的配置文件。对于OpenSSH客户端,有.ssh/config文件。如果您没有,可以自由创建并提供读写访问权限chmod 600 .ssh/config

现在将以下行添加到配置文件中:

Host <your_server_hostname>
    SendEnv CHATD_*

现在,将环境变量添加到您的shell配置文件中。然后,您只需运行

$ ssh username@<your_server_hostname>

自动完成

chatd的自动完成功能旨在为终端用户设计,直观且方便,能识别您是在完成命令、其子命令还是它们的参数。

例如

[用户] /opl[用户] /oplist
[用户] /oplist l[用户] /oplist load
[用户] /oplist load m[用户] /oplist load merge
[用户] /oplist add al[用户] /oplist add alice

所以,不要犹豫,在您想节省输入时按下Tab键 😉

依赖项

~24-42MB
~628K SLoC