diff --git a/README.cn.md b/README.cn.md new file mode 100644 index 0000000..d4ed8e4 --- /dev/null +++ b/README.cn.md @@ -0,0 +1,145 @@ +# tsshd + +[![MIT License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://choosealicense.com/licenses/mit/) +[![GitHub Release](https://img.shields.io/github/v/release/trzsz/tsshd)](https://github.com/trzsz/tsshd/releases) + +[`tssh --udp`](https://github.com/trzsz/trzsz-ssh) 类似于 [`mosh`](https://github.com/mobile-shell/mosh), 而 `tsshd` 类似于 `mosh-server`. + +## 优点简介 + +- 低延迟( 基于 QUIC / KCP ) + +- 端口转发( 与 openssh 相同 ) + +## 如何使用 + +1. 在客户端(本地电脑)上安装 [tssh](https://github.com/trzsz/trzsz-ssh)。 + +2. 在服务端(远程机器)上安装 [tsshd](https://github.com/trzsz/tsshd)。 + +3. 使用 `tssh --udp` 登录服务器。如下配置可省略 `--udp` 参数: + + ``` + Host xxx + #!! UdpMode yes + #!! TsshdPath ~/go/bin/tsshd + ``` + +## 原理简介 + +- `tssh` 在客户端扮演 `ssh` 的角色,`tsshd` 在服务端扮演 `sshd` 的角色。 + +- `tssh` 会先作为一个 ssh 客户端正常登录到服务器上,然后在服务器上启动一个新的 `tsshd` 进程。 + +- `tsshd` 进程会随机侦听一个 61000 到 62000 之间的 UDP 端口,并将其端口和密钥通过 ssh 通道发回给 `tssh` 进程。登录的 ssh 连接会被关闭,然后 `tssh` 进程通过 UDP 与 `tsshd` 进程通讯。 + +- `tsshd` 支持 `QUIC` 协议和 `KCP` 协议(默认是 `QUIC` 协议),可以命令行指定(如 `-oUdpMode=KCP`),或如下配置: + + ``` + Host xxx + #!! UdpMode KCP + ``` + +## 安装方法 + +- Ubuntu 可用 apt 安装 + +
sudo apt install tsshd + + ```sh + sudo apt update && sudo apt install software-properties-common + sudo add-apt-repository ppa:trzsz/ppa && sudo apt update + + sudo apt install tsshd + ``` + +
+ +- Debian 可用 apt 安装 + +
sudo apt install tsshd + + ```sh + sudo apt install curl gpg + curl -s 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x7074ce75da7cc691c1ae1a7c7e51d1ad956055ca' \ + | gpg --dearmor -o /usr/share/keyrings/trzsz.gpg + echo 'deb [signed-by=/usr/share/keyrings/trzsz.gpg] https://ppa.launchpadcontent.net/trzsz/ppa/ubuntu jammy main' \ + | sudo tee /etc/apt/sources.list.d/trzsz.list + sudo apt update + + sudo apt install tsshd + ``` + +
+ +- Linux 可用 yum 安装 + +
sudo yum install tsshd + + - 国内推荐使用 [wlnmp](https://www.wlnmp.com/install) 源,安装 tsshd 只需要添加 wlnmp 源( 配置 epel 源不是必须的 ): + + ```sh + curl -fsSL "https://sh.wlnmp.com/wlnmp.sh" | bash + + sudo yum install tsshd + ``` + + - 也可使用 [gemfury](https://gemfury.com/) 源( 只要网络通,所有操作系统通用 ) + + ```sh + echo '[trzsz] + name=Trzsz Repo + baseurl=https://yum.fury.io/trzsz/ + enabled=1 + gpgcheck=0' | sudo tee /etc/yum.repos.d/trzsz.repo + + sudo yum install tsshd + ``` + +
+ +- ArchLinux 可用 [yay](https://github.com/Jguer/yay) 安装 + +
yay -S tsshd + + ```sh + yay -Syu + yay -S tsshd + ``` + +
+ +- 用 Go 直接安装( 要求 go 1.21 以上 ) + +
go install github.com/trzsz/tsshd/cmd/tsshd@latest + + ```sh + go install github.com/trzsz/tsshd/cmd/tsshd@latest + ``` + + 安装后,`tsshd` 程序一般位于 `~/go/bin/` 目录下( Windows 一般在 `C:\Users\your_name\go\bin\` )。 + +
+ +- 用 Go 自己编译( 要求 go 1.21 以上 ) + +
sudo make install + + ```sh + git clone --depth 1 https://github.com/trzsz/tsshd.git + cd tsshd + make + sudo make install + ``` + +
+ +- 可从 [GitHub Releases](https://github.com/trzsz/tsshd/releases) 中下载,国内可从 [Gitee 发行版](https://gitee.com/trzsz/tsshd/releases) 中下载,解压并加到 `PATH` 环境变量中。 + +## 联系方式 + +有什么问题可以发邮件给作者 ,也可以提 [Issues](https://github.com/trzsz/tsshd/issues) 。欢迎加入 QQ 群:318578930。 + +## 赞助打赏 + +[❤️ 赞助 trzsz ❤️](https://github.com/trzsz),请作者喝杯咖啡 ☕ ? 谢谢您们的支持! diff --git a/README.md b/README.md index 4ef8f9f..b8a2121 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,16 @@ # tsshd +[![MIT License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://choosealicense.com/licenses/mit/) +[![GitHub Release](https://img.shields.io/github/v/release/trzsz/tsshd)](https://github.com/trzsz/tsshd/releases) +[![中文文档](https://img.shields.io/badge/%E4%B8%AD%E6%96%87-%E6%96%87%E6%A1%A3-blue?style=flat)](https://github.com/trzsz/tsshd/blob/main/README.cn.md) + The [`tssh --udp`](https://github.com/trzsz/trzsz-ssh) works like [`mosh`](https://github.com/mobile-shell/mosh), and the `tsshd` works like `mosh-server`. ## Advanced Features - Low latency ( based on QUIC / KCP ) -- Port forwarding ( same as ssh ) +- Port forwarding ( same as openssh ) ## How to use @@ -14,7 +18,7 @@ The [`tssh --udp`](https://github.com/trzsz/trzsz-ssh) works like [`mosh`](https 2. Install [tsshd](https://github.com/trzsz/tsshd) on the server ( the remote host ). -3. Use `tssh --udp xxx` to login to the server. Configure as follows to omit `--udp`: +3. Use `tssh --udp` to login to the server. Configure as follows to omit `--udp`: ``` Host xxx @@ -24,14 +28,88 @@ The [`tssh --udp`](https://github.com/trzsz/trzsz-ssh) works like [`mosh`](https ## How it works -The `tssh` plays the role of `ssh` on the client side, and the `tsshd` plays the role of `sshd` on the server side. +- The `tssh` plays the role of `ssh` on the client side, and the `tsshd` plays the role of `sshd` on the server side. + +- The `tssh` will first login to the server normally as an ssh client, and then run a new `tsshd` process on the server. + +- The `tsshd` process listens on a random udp port between 61000 and 62000, and sends its port number and a secret key back to the `tssh` process over the ssh channel. The ssh connection is then shut down, and the `tssh` process communicates with the `tsshd` process over udp. -The `tssh` will first login to the server normally as an ssh client, and then run a new `tsshd` process on the server. +- The `tsshd` supports `QUIC` protocol and `KCP` protocol (the default is `QUIC`), which can be specified on the command line (such as `-oUdpMode=KCP`), or configured as follows: -The `tsshd` process listens on a random udp port between 61000 and 62000, and sends its port number and a secret key back to the `tssh` process over the ssh channel. The ssh connection is then shut down, and the `tssh` process communicates with the `tsshd` process over udp. + ``` + Host xxx + #!! UdpMode KCP + ``` ## Installation +- Install with apt on Ubuntu + +
sudo apt install tsshd + + ```sh + sudo apt update && sudo apt install software-properties-common + sudo add-apt-repository ppa:trzsz/ppa && sudo apt update + + sudo apt install tsshd + ``` + +
+ +- Install with apt on Debian + +
sudo apt install tsshd + + ```sh + sudo apt install curl gpg + curl -s 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x7074ce75da7cc691c1ae1a7c7e51d1ad956055ca' \ + | gpg --dearmor -o /usr/share/keyrings/trzsz.gpg + echo 'deb [signed-by=/usr/share/keyrings/trzsz.gpg] https://ppa.launchpadcontent.net/trzsz/ppa/ubuntu jammy main' \ + | sudo tee /etc/apt/sources.list.d/trzsz.list + sudo apt update + + sudo apt install tsshd + ``` + +
+ +- Install with yum on Linux + +
sudo yum install tsshd + + - Install with [gemfury](https://gemfury.com/) repository. + + ```sh + echo '[trzsz] + name=Trzsz Repo + baseurl=https://yum.fury.io/trzsz/ + enabled=1 + gpgcheck=0' | sudo tee /etc/yum.repos.d/trzsz.repo + + sudo yum install tsshd + ``` + + - Install with [wlnmp](https://www.wlnmp.com/install) repository. It's not necessary to configure the epel repository for tsshd. + + ```sh + curl -fsSL "https://sh.wlnmp.com/wlnmp.sh" | bash + + sudo yum install tsshd + ``` + +
+ +- Install with [yay](https://github.com/Jguer/yay) on ArchLinux + +
yay -S tsshd + + ```sh + yay -Syu + yay -S tsshd + ``` + +
+ - Install with Go ( Requires go 1.21 or later )
go install github.com/trzsz/tsshd/cmd/tsshd@latest