[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6315":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},6315,"endlessh","skeeto\u002Fendlessh","skeeto","SSH tarpit that slowly sends an endless banner","",null,"C",8474,301,86,26,0,1,3,28,4,38.44,"The Unlicense",false,"master",true,[],"2026-06-12 02:01:18","# 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't depend on any cryptographic libraries. It's\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 [\u002Fetc\u002Fendlessh\u002Fconfig]\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 >endlessh.log 2>endlessh.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 endless banner is sent one line at a time. This is the delay\n# in milliseconds between individual lines.\nDelay 10000\n\n# The length of each line is randomized. This controls the maximum\n# length of each line. Shorter lines may keep clients on for longer if\n# they give up after a certain number of bytes.\nMaxLineLength 32\n\n# Maximum number of connections to accept at a time. Connections beyond\n# this are not immediately rejected, but will wait in the queue.\nMaxClients 4096\n\n# Set the detail level for the log.\n#   0 = Quiet\n#   1 = Standard, useful log messages\n#   2 = Very noisy debugging information\nLogLevel 0\n\n# Set the family of the listening socket\n#   0 = Use IPv4 Mapped IPv6 (Both v4 and v6, default)\n#   4 = Use IPv4 only\n#   6 = Use IPv6 only\nBindFamily 0\n```\n\n## Build issues\n\nSome more esoteric systems require extra configuration when building.\n\n### RHEL 6 \u002F CentOS 6\n\nThis system uses a version of glibc older than 2.17 (December 2012), and\n`clock_gettime(2)` is still in librt. For these systems you will need to\nlink against librt:\n\n    make LDLIBS=-lrt\n\n### Solaris \u002F illumos\n\nThese systems don't include all the necessary functionality in libc and\nthe linker requires some extra libraries:\n\n    make CC=gcc LDLIBS='-lnsl -lrt -lsocket'\n\nIf you're not using GCC or Clang, also override `CFLAGS` and `LDFLAGS`\nto remove GCC-specific options. For example, on Solaris:\n\n    make CFLAGS=-fast LDFLAGS= LDLIBS='-lnsl -lrt -lsocket'\n\nThe feature test macros on these systems isn't reliable, so you may also\nneed to use `-D__EXTENSIONS__` in `CFLAGS`.\n\n### OpenBSD\n\nThe man page needs to go into a different path for OpenBSD's `man` command:\n\n```\ndiff --git a\u002FMakefile b\u002FMakefile\nindex 119347a..dedf69d 100644\n--- a\u002FMakefile\n+++ b\u002FMakefile\n@@ -14,8 +14,8 @@ endlessh: endlessh.c\n install: endlessh\n        install -d $(DESTDIR)$(PREFIX)\u002Fbin\n        install -m 755 endlessh $(DESTDIR)$(PREFIX)\u002Fbin\u002F\n-       install -d $(DESTDIR)$(PREFIX)\u002Fshare\u002Fman\u002Fman1\n-       install -m 644 endlessh.1 $(DESTDIR)$(PREFIX)\u002Fshare\u002Fman\u002Fman1\u002F\n+       install -d $(DESTDIR)$(PREFIX)\u002Fman\u002Fman1\n+       install -m 644 endlessh.1 $(DESTDIR)$(PREFIX)\u002Fman\u002Fman1\u002F\n\n clean:\n        rm -rf endlessh\n```\n\n[np]: https:\u002F\u002Fnullprogram.com\u002Fblog\u002F2019\u002F03\u002F22\u002F\n","Endlessh 是一个 SSH 陷阱程序，通过缓慢发送无尽的随机 SSH 横幅来锁定 SSH 客户端数小时甚至数天。其核心功能是将攻击者困在虚假的 SSH 服务中，从而保护真实的服务不受干扰。该程序使用 C 语言编写，不依赖于任何加密库，采用单线程设计并通过 `poll()` 函数同时处理多个客户端连接。适用于需要增强服务器安全性的场景，尤其是频繁遭受自动化脚本攻击的环境。用户可以自定义配置文件调整监听端口、横幅发送延迟等参数，以适应不同的安全需求。",2,"2026-06-11 03:06:25","top_language"]