{"id":15372990,"url":"https://github.com/vi/moshudp","last_synced_at":"2025-04-15T12:32:13.287Z","repository":{"id":57677396,"uuid":"489773653","full_name":"vi/moshudp","owner":"vi","description":"Simple alternative session establisher for mosh","archived":false,"fork":false,"pushed_at":"2022-05-10T00:00:32.000Z","size":46,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-01T10:42:14.858Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-07T20:19:39.000Z","updated_at":"2024-09-12T14:46:34.000Z","dependencies_parsed_at":"2022-09-10T18:20:19.280Z","dependency_job_id":null,"html_url":"https://github.com/vi/moshudp","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vi%2Fmoshudp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vi%2Fmoshudp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vi%2Fmoshudp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vi%2Fmoshudp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vi","download_url":"https://codeload.github.com/vi/moshudp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223673051,"owners_count":17183618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T13:53:53.500Z","updated_at":"2024-11-08T11:03:56.940Z","avatar_url":"https://github.com/vi.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# moshudp\n\nTypically [mosh](https://mosh.org/) uses ssh to establish session. However sometimes SSH is not available due to bad network, or you could lose access to SSH (and therefore to Mosh) because of some misconfiguration.\n\nMoshudp provides alternative, simplified UDP-based session establishment mechanism for mosh-client and mosh-server.\n\nThis allows connecting mosh-client and mosh-server using only one UDP port, without SSH or another TCP connection.\nAuthentication is based on one static keyfile.\n\n# Limitations\n\n* Only one client at a time. Connecting competing client disconnects earlier one (you can use `--ping` mode to check server nondestructively).\n* Only symmetric crypto - keyfile is the same on client and server.\n* No NAT traversal or ICE.\n* No security audit. I tried my best to protect it from replay attacks or being a DoS amplifier, but I'm not a security specialist.\n* No replies at all if key is incorrect - client would just time out.\n* Security model of moshudp assumes that mosh-server is ready to accept arbitrary (i.e. malicious) datagrams from open internet.\n\n# Installation\n\nUse [Github Releases](https://github.com/vi/moshudp/releases/) to obtain pre-built version for your platform or install Rust toolchain and do `cargo install moshudp`.\n\n# Help outputs\n\n```\n$ moshudp --help\nUsage: moshudp \u003ccommand\u003e [\u003cargs\u003e]\n\nmosh-server and mosh-client interconnector based on UDP and a static key file\n\nOptions:\n  --help            display usage information\n\nCommands:\n  serve             server mode\n  connect           client mode\n  keygen            generate 32-byte random file to use as a key on client and\n                    server\n\n$ moshudp serve  --help\nUsage: moshudp serve \u003caddr\u003e \u003ckeyfile\u003e [-4] [-6]\n\nserver mode\n\nPositional Arguments:\n  addr              socket address to listen\n  keyfile           32-byte file to generate use as a key\n\nOptions:\n  -4, --ipv4        limit hostname resolution to IPv4 addresses\n  -6, --ipv6        limit hostname resolution to IPv6 addresses\n  --help            display usage information\n\n$ moshudp connect  --help\nUsage: moshudp connect \u003caddr\u003e \u003ckeyfile\u003e [-4] [-6] [--ping]\n\nclient mode\n\nPositional Arguments:\n  addr              socket address to connect\n  keyfile           32-byte file to generate use as a key\n\nOptions:\n  -4, --ipv4        limit hostname resolution to IPv4 addresses\n  -6, --ipv6        limit hostname resolution to IPv6 addresses\n  --ping            skip most of the algorithm, just send a ping\n  --help            display usage information\n```\n\n# See also\n\n* The project was inspred by [mosh-mallet](https://gitlab.com/Zinnia_Zirconium/mosh-mallet).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvi%2Fmoshudp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvi%2Fmoshudp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvi%2Fmoshudp/lists"}