🍺 BREW Explorer

← all formulae

endlessh

brew install endlessh v1.1 Unlicense

SSH tarpit that slowly sends an endless banner

30-day installs
90-day
57
365-day · #10672
8.5k
★ GitHub stars · updated 2y ago

Links

Raw metadata
{
  "aliases": [],
  "alternatives": [],
  "build_dependencies": [],
  "categories": [],
  "caveats": null,
  "conflicts_with": [],
  "dependencies": [],
  "deprecated": 0,
  "deprecation_reason": null,
  "desc": "SSH tarpit that slowly sends an endless banner",
  "disable_reason": null,
  "disabled": 0,
  "enrichment_fetched_at": "2026-06-20T23:37:19+00:00",
  "first_seen": "2026-06-20T23:34:18+00:00",
  "full_name": "endlessh",
  "github_default_branch": "master",
  "github_last_commit_at": "2024-06-03T13:22:10Z",
  "github_readme_excerpt": "# Endlessh: an SSH tarpit\n\nEndlessh is an SSH tarpit [that *very* slowly sends an endless, random\nSSH banner][np]. It keeps SSH clients locked up for hours or even days\nat a time. The purpose is to put your real SSH server on another port\nand then let the script kiddies get stuck in this tarpit instead of\nbothering a real server.\n\nSince the tarpit is in the banner before any cryptographic exchange\noccurs, this program doesn\u0027t depend on any cryptographic libraries. It\u0027s\na simple, single-threaded, standalone C program. It uses `poll()` to\ntrap multiple clients at a time.\n\n## Usage\n\nUsage information is printed with `-h`.\n\n```\nUsage: endlessh [-vhs] [-d MS] [-f CONFIG] [-l LEN] [-m LIMIT] [-p PORT]\n  -4        Bind to IPv4 only\n  -6        Bind to IPv6 only\n  -d INT    Message millisecond delay [10000]\n  -f        Set and load config file [/etc/endlessh/config]\n  -h        Print this help message and exit\n  -l INT    Maximum banner line length (3-255) [32]\n  -m INT    Maximum number of clients [4096]\n  -p INT    Listening port [2222]\n  -s        Print diagnostics to syslog instead of standard output\n  -v        Print diagnostics (repeatable)\n```\n\nArgument order matters. The configuration file is loaded when the `-f`\nargument is processed, so only the options that follow will override the\nconfiguration file.\n\nBy default no log messages are produced. The first `-v` enables basic\nlogging and a second `-v` enables debugging logging (noisy). All log\nmessages are sent to standard output by default. `-s` causes them to be\nsent to syslog.\n\n    endlessh -v \u003eendlessh.log 2\u003eendlessh.err\n\nA SIGTERM signal will gracefully shut down the daemon, allowing it to\nwrite a complete, consistent log.\n\nA SIGHUP signal requests a reload of the configuration file (`-f`).\n\nA SIGUSR1 signal will print connections stats to the log.\n\n## Sample Configuration File\n\nThe configuration file has similar syntax to OpenSSH.\n\n```\n# The port on which to listen for new SSH connections.\nPort 2222\n\n# The endle",
  "github_repo": "skeeto/endlessh",
  "github_stars": 8478,
  "github_topics": [],
  "homepage": "https://github.com/skeeto/endlessh",
  "homepage_og_description": null,
  "homepage_og_image": null,
  "homepage_title": null,
  "installs_30d": null,
  "installs_365d": 57,
  "installs_90d": null,
  "keg_only": 0,
  "keg_only_reason": null,
  "last_seen": "2026-06-20T23:34:18+00:00",
  "license": "Unlicense",
  "llm_generated_at": null,
  "llm_model": null,
  "name": "endlessh",
  "oldnames": [],
  "one_liner": null,
  "optional_dependencies": [],
  "rank_30d": null,
  "rank_365d": 10672,
  "rank_90d": null,
  "raw_hash": "aab610f52c249e9c",
  "recommended_dependencies": [],
  "revision": 0,
  "ruby_source_path": "Formula/e/endlessh.rb",
  "tap": "homebrew/core",
  "test_dependencies": [],
  "uses_from_macos": [
    {
      "netcat": "test"
    }
  ],
  "version_head": "HEAD",
  "version_stable": "1.1",
  "versioned_formulae": [],
  "why_use_this": null
}