有多少个反向 ssh 隧道可以连接到 ubuntu 服务器?是否有防火墙限制或者它是否占用我的服务器的资源?
我正在使用以下命令从客户端建立隧道到我的服务器或客户端:
ssh -fNTR PORT:localhost:22 USER@SERVER_IP
(每个客户端的端口都不同)
然后在服务器上我使用以下命令:
ssh CLIENT_USER@localhost -p PORT
这样,有多少个客户端可以同时连接到我的服务器?
答案1
如果您有许多 ssh 实例尝试同时登录同一台服务器,您可能会注意到间歇性故障。
默认情况下,sshd 会限制进入并等待身份验证的连接数量和速率。默认限制太小。您可能希望在 /etc/ssh/sshd_config 中更改默认值:
MaxStartups 10:30:60
类似于:
MaxStartups 999
我经过一番痛苦的经历才发现这一点。
答案2
唯一的限制是可用端口的数量(假设您仅绑定,则约为 65k localhost
)。有些端口是保留的,如果您使用所有端口,则无法启动第二个连接(您还需要一个用于传出连接的端口)。因此,大致而言,您可以并行重复上述过程 32k 次,但您很可能会更早耗尽资源(RAM、CPU)。
答案3
当你需要连接到特定的远程计算机时,有些系统会按需创建反向隧道。这些系统包括AWS IoT 安全隧道和开源软件我出于同样的目的编写了这些。这些消除了同时打开太多反向隧道的担忧。
我的系统使用 MQTT 连接(更具体地说,AWS IoT Core,这是一个安全的 MQTT 代理,具有针对每个客户端的安全策略)来通知远程计算机使用代理上的随机端口打开到代理的反向 SSH 隧道。隧道打开后,远程计算机会将端口号报告给您的笔记本电脑/台式机,然后软件现在会通过代理建立一条通往远程计算机的隧道;您无需登录代理。可扩展性受远程计算机的活动 SSH 连接数限制,而不是受您可以连接的远程计算机总数限制。