{"id":13876000,"url":"https://github.com/Freaky/tarssh","last_synced_at":"2025-07-16T10:32:25.425Z","repository":{"id":55911531,"uuid":"177857612","full_name":"Freaky/tarssh","owner":"Freaky","description":"A simple SSH tarpit inspired by endlessh","archived":false,"fork":false,"pushed_at":"2024-04-20T23:03:58.000Z","size":134,"stargazers_count":128,"open_issues_count":2,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-23T19:36:07.820Z","etag":null,"topics":["daemon","security","ssh","ssh-server","tarpit"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Freaky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-26T19:43:24.000Z","updated_at":"2024-11-11T06:16:46.000Z","dependencies_parsed_at":"2024-11-13T19:41:32.601Z","dependency_job_id":"7ebb7218-f59e-47cc-93f7-33e2bb0940c4","html_url":"https://github.com/Freaky/tarssh","commit_stats":{"total_commits":129,"total_committers":3,"mean_commits":43.0,"dds":0.03100775193798455,"last_synced_commit":"d046b43d80d35a43d4116e6553c1fec4b55cd435"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Freaky%2Ftarssh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Freaky%2Ftarssh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Freaky%2Ftarssh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Freaky%2Ftarssh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Freaky","download_url":"https://codeload.github.com/Freaky/tarssh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226122303,"owners_count":17576920,"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":["daemon","security","ssh","ssh-server","tarpit"],"created_at":"2024-08-06T06:00:56.148Z","updated_at":"2024-11-24T03:31:37.365Z","avatar_url":"https://github.com/Freaky.png","language":"Rust","funding_links":[],"categories":["Rust","security"],"sub_categories":[],"readme":"[![Cargo](https://img.shields.io/crates/v/tarssh.svg)][crate]\n\n# tarssh\n\nA simple SSH tarpit, similar to [endlessh](https://nullprogram.com/blog/2019/03/22/).\n\nAs per [RFC 4253](https://tools.ietf.org/html/rfc4253#page-4):\n\n```txt\n   The server MAY send other lines of data before sending the version\n   string.  Each line SHOULD be terminated by a Carriage Return and Line\n   Feed.  Such lines MUST NOT begin with \"SSH-\", and SHOULD be encoded\n   in ISO-10646 UTF-8 [RFC3629] (language is not specified).  Clients\n   MUST be able to process such lines.\n```\n\nIn other words, you can fool SSH clients into waiting an extremely long time for\na SSH handshake to even begin simply by waffling on endlessly.  My high score is\njust over a fortnight.\n\nThe intent of this is to increase the cost of mass SSH scanning - even clients\nthat immediately disconnect after the first response are delayed a little, and\nthat's one less free connection for the next attack.\n\n## Usage\n\n```console\n-% cargo install tarssh\n-% tarssh --help\ntarssh 0.7.0\nA SSH tarpit server\n\nUSAGE:\n    tarssh [FLAGS] [OPTIONS]\n\nFLAGS:\n        --disable-log-ident         Disable module name in logs (e.g. \"tarssh\")\n        --disable-log-level         Disable log level in logs (e.g. \"info\")\n        --disable-log-timestamps    Disable timestamps in logs\n    -h, --help                      Prints help information\n    -V, --version                   Prints version information\n    -v, --verbose                   Verbose level (repeat for more verbosity)\n\nOPTIONS:\n        --chroot \u003cchroot\u003e              Chroot to this directory\n    -d, --delay \u003cdelay\u003e                Seconds between responses [default: 10]\n    -g, --group \u003cgroup\u003e                Run as this group\n    -l, --listen \u003clisten\u003e...           Listen address(es) to bind to [default: 0.0.0.0:2222]\n    -c, --max-clients \u003cmax-clients\u003e    Best-effort connection limit [default: 4096]\n    -t, --timeout \u003ctimeout\u003e            Socket write timeout [default: 30]\n    -u, --user \u003cuser\u003e                  Run as this user and their primary group\n\n-% tarssh -v --disable-log-timestamps --disable-log-ident -l 0.0.0.0:2222 \\[::]:2222\n[INFO ] init, pid: 27344, version: 0.7.0\n[INFO ] listen, addr: 0.0.0.0:2222\n[INFO ] listen, addr: [::]:2222\n[INFO ] privdrop, enabled: false\n[INFO ] sandbox, enabled: true\n[INFO ] start, servers: 2, max_clients: 4096, delay: 10s, timeout: 30s\n[INFO ] connect, peer: 127.0.0.1:61986, clients: 1\n[INFO ] connect, peer: 127.0.0.1:61988, clients: 2\nload: 1.05  cmd: tarssh 27344 [kqread] 6.92r 0.00u 0.00s 0% 4512k\n[INFO ] info, pid: 27344, signal: INFO, uptime: 6.92s, clients: 2, total: 2, bytes: 0\n[INFO ] disconnect, peer: 127.0.0.1:61986, duration: 19.80s, bytes: 24, error: \"Broken pipe (os error 32)\", clients: 1\n[INFO ] disconnect, peer: 127.0.0.1:61988, duration: 19.62s, bytes: 24, error: \"Broken pipe (os error 32)\", clients: 0\n^C[INFO ] shutdown, pid: 27344, signal: INT, uptime: 25.39s, clients: 0, total: 2, bytes: 48\n```\n\nThe `info` line is generated using a BSD `SIGINFO` signal - `SIGHUP` is also\nsupported for Unix platforms lacking this.\n\n\n[Tokio]: https://tokio.rs\n[rusty-sandbox]: https://github.com/myfreeweb/rusty-sandbox\n[privdrop]: https://crates.io/crates/privdrop\n[crate]: https://crates.io/crates/tarssh\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFreaky%2Ftarssh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFreaky%2Ftarssh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFreaky%2Ftarssh/lists"}