我正在使用 Ubuntu 14.04 LTS。我想创建一个openssh
服务器,它侦听许多端口(至少 100 个不同的端口)。多个客户端将连接到该服务器,但每个客户端都需要有自己的专用端口。客户端将按需创建到该主机的反向 ssh 隧道,并发客户端的最大数量将为 max。一次 10 个。
配置 16 个或更多端口时,Openssh 服务器无法启动,失败并显示错误:
fatal: Too many listen sockets. Enlarge MAX_LISTEN_SOCKS
MAX_LISTEN_SOCKS
sshd.c
在文件中定义。有没有办法扩大MAX_LISTEN_SOCKS
,而不必openssh
从源代码重新编译和重新安装服务器?
替代方案:是否有不同/更好的方法来解决这个问题?
答案1
您可以通过以下命令在任意数量的端口上运行sshd
using inetd
(和可选) :tcpd
inetd.conf
10000 stream tcp nowait root /usr/sbin/tcpd sshd -i
10001 stream tcp nowait root /usr/sbin/tcpd sshd -i
10002 stream tcp nowait root /usr/sbin/tcpd sshd -i
...
sshd -i
您还应该阅读中的警告sshd 手册。
答案2
感谢您的帮助和回复,事实证明,这个问题基本上毫无意义。一位乐于助人的 Reddit 用户让我大开眼界科兹勒: https://www.reddit.com/r/linuxadmin/comments/3kdn1r/openssh_server_fatal_too_many_listen_sockets/cuwoo02
但他们仍然会在端口 22 上连接到您,反向 SSH 隧道是您连接到的他们上打开的端口。您的服务器端守护程序 (OpenSSH) 不需要多个侦听端口来接受多个客户端。这就是多线程套接字服务器的美妙之处
基本上我不需要这个功能,这是我在原来的问题中所要求的。