TNT's Not Tunnel
Find a file
m1ngsama d1623f64d4 refactor(ssh): migrate to libssh callback-based API
Replace deprecated message-based authentication and channel APIs with
modern callback-based server implementation (libssh 0.9+).

Changes:
- Replace ssh_message_auth_password with auth_password_function callback
- Replace ssh_message_channel_request_pty_* with channel_pty_request_function
- Remove #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
- Implement session_context_t to pass state between callbacks
- Fix event loop to wait for auth, channel open, AND channel ready (PTY/shell/exec)

Key improvements:
- Eliminates message loop complexity (libssh handles state machine)
- Proper handling of SSH exec requests (e.g., "ssh host exit")
- More maintainable and future-proof code

Testing:
- All tests passing (17/17)
  - Basic functionality: 3/3
  - Anonymous access: 2/2
  - Security features: 11/11
  - Stress test: pass

This closes the maintenance debt listed in TODO.md and ensures
compatibility with future libssh versions.
2026-02-07 23:04:06 +08:00
.github/workflows fix(ci): support macOS by using gtimeout from coreutils 2026-02-07 14:43:46 +08:00
include refactor: optimize rendering, log loading, and restructure tests 2026-02-07 14:34:19 +08:00
scripts feat: enhance anonymous access and long-term stability 2026-01-22 15:06:54 +08:00
src refactor(ssh): migrate to libssh callback-based API 2026-02-07 23:04:06 +08:00
tests fix(test): increase server startup wait time to reduce flakiness 2026-02-07 14:53:55 +08:00
.gitignore Add development and testing infrastructure 2025-12-02 10:00:00 +08:00
ANONYMOUS_ACCESS_SUMMARY.md docs: add comprehensive completion summary 2026-01-22 15:28:30 +08:00
CHANGELOG.md docs: document comprehensive security fixes 2026-01-22 14:12:55 +08:00
CICD.md Add CI/CD and deployment automation 2025-12-02 12:47:15 +08:00
DEPLOYMENT.md Add CI/CD and deployment automation 2025-12-02 12:47:15 +08:00
EASY_SETUP.md feat: enhance anonymous access and long-term stability 2026-01-22 15:06:54 +08:00
HACKING Add developer documentation 2025-12-02 15:00:00 +08:00
IMPLEMENTATION_SUMMARY.txt docs: add comprehensive implementation summary 2026-01-22 14:48:15 +08:00
install.sh Add CI/CD and deployment automation 2025-12-02 12:47:15 +08:00
LICENSE Initial commit 2025-07-01 09:00:00 +08:00
Makefile refactor: optimize rendering, log loading, and restructure tests 2026-02-07 14:34:19 +08:00
QUICKREF Add developer documentation 2025-12-02 15:00:00 +08:00
README Rewrite README in classic Unix style 2025-12-02 12:57:18 +08:00
README.md refactor: optimize rendering, log loading, and restructure tests 2026-02-07 14:34:19 +08:00
SECURITY_QUICKREF.md docs: add security quick reference guide 2026-01-22 14:35:00 +08:00
TEST_RESULTS.md test: add comprehensive security feature test suite 2026-01-22 14:32:38 +08:00
tnt.service feat: enhance anonymous access and long-term stability 2026-01-22 15:06:54 +08:00
TODO.md refactor(ssh): migrate to libssh callback-based API 2026-02-07 23:04:06 +08:00

TNT

Terminal chat server. Vim-style interface. SSH-based.

Install

curl -sSL https://raw.githubusercontent.com/m1ngsama/TNT/main/install.sh | sh

Or download from releases.

Run

tnt              # port 2222
tnt -p 3333      # custom port
PORT=3333 tnt    # env var

Connect: ssh -p 2222 localhost

Anonymous Access: By default, users can connect with ANY username and ANY password (or empty password). No SSH keys required. This makes TNT perfect for public chat servers.

Security

Configure via environment variables.

Access Control

TNT_ACCESS_TOKEN="secret" tnt           # require password
TNT_BIND_ADDR=127.0.0.1 tnt             # localhost only

Without TNT_ACCESS_TOKEN, server is open (default).

Rate Limiting

TNT_MAX_CONNECTIONS=100 tnt             # total limit
TNT_MAX_CONN_PER_IP=10 tnt              # per-IP limit
TNT_RATE_LIMIT=0 tnt                    # disable (testing only)

Default: 64 total, 5 per IP, rate limiting enabled.

SSH Options

TNT_SSH_LOG_LEVEL=3 tnt                 # verbose logging (0-4)

Keys

INSERT (default)

  • ESC → NORMAL
  • Enter → send
  • Backspace → delete

NORMAL

  • i → INSERT
  • : → COMMAND
  • j/k → scroll
  • g/G → top/bottom
  • ? → help

COMMAND

  • :list → users
  • :help → commands
  • ESC → back

Build

make              # normal
make debug        # with symbols
make asan         # sanitizer
make check        # static analysis

Requires: libssh

Deploy

See DEPLOYMENT.md for systemd setup.

Files

messages.log      chat history
host_key          SSH key (auto-gen)
tnt.service       systemd unit

Test

make test               # run comprehensive test suite
# Individual tests are in tests/ directory

Docs

  • README - man page style
  • EASY_SETUP.md - 🚀 快速部署指南 / Quick Setup Guide
  • HACKING - dev guide
  • DEPLOYMENT.md - production
  • CICD.md - automation
  • QUICKREF - cheat sheet

License

MIT