Automic VaultAutomic Vault

brew

Install endlessh with Homebrew, apk, apt, dnf, Nix

SSH tarpit that slowly sends an endless banner. Version 1.1 via Homebrew; verified from local package data.

install

Additional install commands

macOS

Homebrewverified · 100%
brew install endlessh

local Homebrew formula metadata

Linux

Alpine Linux apkverified · 92%
sudo apk add endlessh

Alpine Linux edge package indexes · endlessh · source: dl-cdn.alpinelinux.org

Debian aptverified · 92%
sudo apt install endlessh

Debian stable package indexes · endlessh · source: deb.debian.org

Fedora dnfverified · 92%
sudo dnf install endlessh

Fedora Rawhide package metadata · endlessh · source: dl.fedoraproject.org

Nixverified · 92%
nix profile install nixpkgs#endlessh

nixpkgs package indexes · pkgs/by-name/en/endlessh/package.nix · source: api.github.com

overview

Package summary

SSH tarpit that slowly sends an endless banner

Commands and aliases

  • endlessh

history

Project history and usage

Endlessh is an SSH tarpit: it accepts SSH connections and slowly sends an endless, random pre-authentication banner so automated clients remain tied up for a long time. Its purpose is to move the real SSH daemon elsewhere and let noisy scanners waste time on port 22.

Project history

The author introduced Endlessh publicly in March 2019 as a small C program that exploits the SSH identification-banner phase before cryptographic negotiation. Because the tarpit happens before key exchange, the README notes that Endlessh needs no cryptographic libraries.

The implementation was intentionally simple and portable: a single-threaded C server using `poll()` to handle many delayed clients. The project blog describes this as a resource-minimizing design, trading maximum platform-specific efficiency for low memory use and broad Unix portability.

Adoption history

Endlessh became a recognizable defensive toy-tool because it addresses a universal server-owner annoyance: constant automated SSH probing. The launch article notes discussion on Hacker News and Reddit and describes real deployments with many trapped clients.

Its adoption niche is operational rather than cryptographic. Users generally run it on the public SSH port, move real SSH to another port, and tune delay, banner length, client limit, logging, and bind family through command-line flags or `/etc/endlessh/config`.

How it is used

The default command listens on port 2222, with a 10-second delay between banner lines and a default maximum of 4096 clients. The README and man page document flags for IPv4 or IPv6 binding, delay, config file, max line length, max clients, port, syslog, and verbosity.

A sample configuration file uses OpenSSH-like syntax with `Port`, `Delay`, `MaxLineLength`, `MaxClients`, `LogLevel`, and `BindFamily`. Signals are also part of normal operation: SIGTERM shuts down cleanly, SIGHUP reloads configuration, and SIGUSR1 prints connection statistics.

Why package nerds care

Endlessh is package-nerd significant because it is tiny, dependency-light security plumbing with a clear daemon shape. It is easy to package, easy to supervise, and easy to understand from its man page, yet it changes the economics of commodity SSH scanning.

It is also a good example of a Unix package whose README is effectively the operational model: one binary, one config file, no keys, no crypto, and behavior controlled by conventional flags and signals.

Timeline

  • 2019: Endlessh introduced publicly in the author's blog post.
  • 2020: Man page date records January 29, 2020.
  • 2019-present: Project remains available as a small standalone C SSH tarpit.

Related projects

  • OpenSSH is the operational counterpart users typically move away from the public tarpit port.
  • RFC 4253 is the SSH protocol behavior Endlessh relies on for pre-identification banner lines.
  • Other tarpits and asyncio-based tarpit sketches are discussed in the author's introductory article.

security posture

Risk level: blue

broad file, network, media, or database tool signal.

Risk classifier

blue risk · medium confidence · tool

Why

  • broad file, network, media, or database tool signal

Signals

  • text:ssh

Install behavior

  • No Homebrew post-install hook is recorded in formula metadata.
  • Homebrew bottle metadata is available for 8 platform targets.

Recommended review

Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.

local files

Configuration and credential file locations

These source-backed paths show where this package keeps local settings or durable credentials. Automic Vault can use them as review targets for secret scanning, migration, and command approval.

Configuration files

Config paths the tool may read or write during local use.

Unix
/etc/endlessh/config

executables

Installed executables

CommandKindExposureNote
endlesshcliglobal executable

freshness

Version and freshness

These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.

page generated2026-07-08
manager version1.1
manager updated
local dataok
upstreamcurrent
latest detected1.1

https://github.com/skeeto/endlessh

  • infoNo package-manager update timestamp was available.low confidence

install metadata

Package metadata

Package keybrew:endlessh
Version1.1
Package managerHomebrew
Package manager pagehttps://formulae.brew.sh/formula/endlessh
Homepagehttps://github.com/skeeto/endlessh
Repositoryhttps://github.com/skeeto/endlessh
Upstream docshttps://github.com/skeeto/endlessh#readme
LicenseUnlicense
Source archivehttps://github.com/skeeto/endlessh/archive/refs/tags/1.1.tar.gz
Bottleavailable (on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, arm64_ventura, sonoma, ventura, x86_64_linux)
Homebrew post-installnot defined
Servicenone declared

registry facts

Source database details

Source DatabaseHomebrew formula API
Taphomebrew/core
Full Nameendlessh
Version Scheme0
Revision0
Head VersionHEAD
Bottle Stable Root URLhttps://ghcr.io/v2/homebrew/core
Deprecatedno
Disabledno
Keg Onlyno
URL Keys
  • head
  • stable

source database matches

Other package-manager records

Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.

Debian apt95%

endlessh 1.1-5.1

SSH tarpit that slowly sends an endless connection banner

https://github.com/skeeto/endlessh

sudo apt install endlessh
  • Section: devel
  • Architecture: amd64
  • 1 dependencies
  • normalized package name match
  • Matched by: Endlessh
Debian stable package indexes · deb.debian.org · Debian stable package indexes: endlessh from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz
Nix95%

endlessh

nix profile install nixpkgs#endlessh
  • normalized package name match
  • Matched by: Endlessh
nixpkgs package indexes · api.github.com · nixpkgs package indexes: pkgs/by-name/en/endlessh/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
Ubuntu apt95%

endlessh 1.1-5

SSH tarpit that slowly sends an endless connection banner

https://github.com/skeeto/endlessh

sudo apt install endlessh
  • Section: universe/devel
  • Architecture: amd64
  • 1 dependencies
  • normalized package name match
  • Matched by: Endlessh
Ubuntu 24.04 LTS package indexes · archive.ubuntu.com · Ubuntu 24.04 LTS package indexes: endlessh from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz
apk95%

endlessh 1.1-r2

SSH tarpit that very slowly sends an endless, random SSH banner

https://github.com/skeeto/endlessh

sudo apk add endlessh
  • License: Unlicense
  • Architecture: x86_64
  • Source Package: endlessh
  • 1 dependencies
  • 1 provides
  • normalized package name match
  • Matched by: Endlessh
Alpine Linux edge package indexes · dl-cdn.alpinelinux.org · Alpine Linux edge package indexes: endlessh from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
apk95%

endlessh-doc 1.1-r2

SSH tarpit that very slowly sends an endless, random SSH banner (documentation)

https://github.com/skeeto/endlessh

sudo apk add endlessh-doc
  • License: Unlicense
  • Architecture: x86_64
  • Source Package: endlessh
  • normalized package name match
  • Matched by: Endlessh
Alpine Linux edge package indexes · dl-cdn.alpinelinux.org · Alpine Linux edge package indexes: endlessh-doc from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
dnf95%

endlessh 1.1-16.fc44

SSH tarpit that slowly sends an endless banner

https://github.com/skeeto/endlessh

sudo dnf install endlessh
  • License: Unlicense
  • Category: Unspecified
  • Architecture: x86_64
  • Source Package: endlessh
  • 4 dependencies
  • 2 provides
  • normalized package name match
  • Matched by: Endlessh
Fedora Rawhide package metadata · dl.fedoraproject.org · Fedora Rawhide package metadata: endlessh from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst

source trail

Generated from repository data

This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.

Used sources

  • Geiger risk classifier
  • Nucleus package database
  • av.db category and tag curation
  • cross-ecosystem install command graph
  • curated configuration and credential file locations
  • curated package history
  • external package-manager database matches
  • package relationship graph
  • package version freshness
  • package-page enrichment