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
- https://github.com/skeeto/endlessh
- GitHub: skeeto/endlessh
- Brew formula source: Formula/e/endlessh.rb
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
}