Tighten README
ci / test (push) Has been cancelled
ci / fuzz-smoke (push) Has been cancelled
ci / windows-client (push) Has been cancelled
ci / package-release (linux-x86_64, ubuntu-latest) (push) Has been cancelled
ci / package-release (macos-aarch64, macos-14) (push) Has been cancelled
ci / package-release (macos-x86_64, macos-13) (push) Has been cancelled
ci / package-release (windows-x86_64, windows-latest) (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
ci / test (push) Has been cancelled
ci / fuzz-smoke (push) Has been cancelled
ci / windows-client (push) Has been cancelled
ci / package-release (linux-x86_64, ubuntu-latest) (push) Has been cancelled
ci / package-release (macos-aarch64, macos-14) (push) Has been cancelled
ci / package-release (macos-x86_64, macos-13) (push) Has been cancelled
ci / package-release (windows-x86_64, windows-latest) (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
This commit is contained in:
@@ -1,35 +1,30 @@
|
|||||||
# Dosh
|
# Dosh
|
||||||
|
|
||||||
Dosh is a fast encrypted remote terminal. It keeps the good parts of SSH and
|
Dosh is an encrypted remote terminal for fast reconnecting shells.
|
||||||
Mosh for day-to-day shell work: quick attach, roaming over UDP, reconnect after
|
|
||||||
network changes, persistent server-side terminals, optional predictive typing,
|
|
||||||
and TCP forwarding.
|
|
||||||
|
|
||||||
Dosh uses SSH-compatible bootstrap for first setup and can use its native
|
It runs a `dosh-server` on the remote machine and a `dosh` client locally. The
|
||||||
cached attach path after trust is established. The goal is simple: type
|
first setup can use SSH. After that, Dosh can attach over encrypted UDP with
|
||||||
`dosh my-server` and land in a usable terminal about as fast as the network can
|
cached credentials, keep terminal sessions alive, reconnect after network
|
||||||
allow, then keep that terminal alive when Wi-Fi, sleep, or the client process
|
changes, and forward TCP ports.
|
||||||
gets messy.
|
|
||||||
|
|
||||||
## Status
|
## Support
|
||||||
|
|
||||||
- Clients: macOS, Linux, and Windows.
|
- Client: macOS, Linux, Windows
|
||||||
- Server: Unix-like hosts with PTY support.
|
- Server: Unix-like systems with PTYs
|
||||||
- Windows: client-only; install with PowerShell and connect to a Unix Dosh
|
- Windows: client only
|
||||||
server.
|
- UDP port: one configured server port, default `50000`
|
||||||
- Security: encrypted transport, pinned Dosh host keys, replay-resistant attach
|
|
||||||
tickets, and SSH fallback for bootstrap/recovery.
|
Dosh does not replace SCP, SFTP, X11 forwarding, or a Windows server.
|
||||||
- Not included: X11 forwarding, SFTP/SCP replacement, or a Windows server.
|
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
Unix/macOS server or client:
|
Server and client on Unix/macOS:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -fsSL https://git.palav.dev/Palav/dosh/raw/branch/main/install.sh | sh -s -- both --repo https://git.palav.dev/Palav/dosh.git --port 50000
|
curl -fsSL https://git.palav.dev/Palav/dosh/raw/branch/main/install.sh | sh -s -- both --repo https://git.palav.dev/Palav/dosh.git --port 50000
|
||||||
```
|
```
|
||||||
|
|
||||||
Unix/macOS client only:
|
Client only on Unix/macOS:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -fsSL https://git.palav.dev/Palav/dosh/raw/branch/main/install.sh | sh -s -- client --repo https://git.palav.dev/Palav/dosh.git
|
curl -fsSL https://git.palav.dev/Palav/dosh/raw/branch/main/install.sh | sh -s -- client --repo https://git.palav.dev/Palav/dosh.git
|
||||||
@@ -41,114 +36,43 @@ Windows client:
|
|||||||
irm https://git.palav.dev/Palav/dosh/raw/branch/main/install.ps1 | iex
|
irm https://git.palav.dev/Palav/dosh/raw/branch/main/install.ps1 | iex
|
||||||
```
|
```
|
||||||
|
|
||||||
The installers prefer release binaries and fall back to a source build when
|
## Commands
|
||||||
needed.
|
|
||||||
|
|
||||||
## Use
|
|
||||||
|
|
||||||
Set up a host from your SSH config:
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
dosh setup my-server
|
dosh setup HOST # import SSH config and trust the Dosh host key
|
||||||
|
dosh HOST # connect
|
||||||
|
dosh HOST COMMAND # connect and run a command
|
||||||
|
dosh update # update Dosh
|
||||||
|
dosh doctor HOST # check config and connectivity
|
||||||
|
dosh recover HOST # clear cached attach state and re-check
|
||||||
```
|
```
|
||||||
|
|
||||||
Connect:
|
Examples:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
dosh my-server
|
dosh palav
|
||||||
|
dosh palav tm
|
||||||
|
dosh forward palav -L 8080:127.0.0.1:80
|
||||||
|
dosh forward palav -D 1080
|
||||||
|
dosh forward palav -R 2222:127.0.0.1:22
|
||||||
```
|
```
|
||||||
|
|
||||||
Run a command on connect:
|
Agent forwarding is opt-in with `-A` and must be enabled on the server.
|
||||||
|
|
||||||
```sh
|
|
||||||
dosh my-server tm
|
|
||||||
```
|
|
||||||
|
|
||||||
Check the install and network path:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dosh doctor my-server
|
|
||||||
dosh selftest my-server
|
|
||||||
```
|
|
||||||
|
|
||||||
Repair local cached attach state without changing host trust:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dosh recover my-server
|
|
||||||
```
|
|
||||||
|
|
||||||
Update:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dosh update
|
|
||||||
dosh update --check
|
|
||||||
```
|
|
||||||
|
|
||||||
## Forwarding
|
|
||||||
|
|
||||||
Local forward:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dosh forward my-server -L 8080:127.0.0.1:80
|
|
||||||
```
|
|
||||||
|
|
||||||
Dynamic SOCKS forward:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dosh forward my-server -D 1080
|
|
||||||
```
|
|
||||||
|
|
||||||
Remote forward:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
dosh forward my-server -R 2222:127.0.0.1:22
|
|
||||||
```
|
|
||||||
|
|
||||||
Agent forwarding is opt-in with `-A` and must also be allowed by the server.
|
|
||||||
|
|
||||||
## Config
|
## Config
|
||||||
|
|
||||||
Client config lives at:
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
~/.config/dosh/client.toml
|
~/.config/dosh/client.toml
|
||||||
~/.config/dosh/hosts.toml
|
~/.config/dosh/hosts.toml
|
||||||
```
|
|
||||||
|
|
||||||
Server config lives at:
|
|
||||||
|
|
||||||
```text
|
|
||||||
~/.config/dosh/server.toml
|
~/.config/dosh/server.toml
|
||||||
```
|
```
|
||||||
|
|
||||||
Useful client defaults:
|
Common client settings:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
default_session = "new"
|
default_session = "new"
|
||||||
auth_preference = "native,ssh"
|
auth_preference = "native,ssh"
|
||||||
predict = true
|
predict = true
|
||||||
predict_mode = "experimental"
|
|
||||||
cache_attach_tickets = true
|
cache_attach_tickets = true
|
||||||
disconnect_status = true
|
disconnect_status = true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Development
|
|
||||||
|
|
||||||
Build and test:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cargo test
|
|
||||||
cargo build --release
|
|
||||||
```
|
|
||||||
|
|
||||||
Run the terminal/TUI regression harness:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make tui-harness
|
|
||||||
```
|
|
||||||
|
|
||||||
Package release artifacts:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
sh scripts/package-release.sh
|
|
||||||
```
|
|
||||||
|
|||||||
Reference in New Issue
Block a user