将MaxSessions / MaxStartups修复SSH连接被拒绝的消息?

UPDATED在底部 – >

我在我的操作系统类中使用了一个红帽企业Linux服务器版本7.4(Maipo)VM ,大约有20名学生,他们通常使用自己特定的用户ID来启动两台到这台机器的ssh连接。 当学生进入教室时,这似乎工作正常。

但是,在大多math生尝试login的课程开始时,我有学生无法使用“ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused”消息login系统。 等待20分钟左右似乎最终让更多的人进来。sshd肯定是在跑步。 被拒绝的用户组有所不同,有时也包括我。 我可能在几分钟之前通过ssh成功连接了,但是无法启动第二个会话。

我们所有的传出stream量都使用多对一的NAT设置,因此服务器上的所有传入ssh连接都将显示为来自相同的IP编号。 在查看文档并进行挖掘之后,我在sshd_config文件中更改了以下两个参数:

 #MaxSessions 10 MaxSessions 500 

 #MaxStartups 10:30:100 MaxStartups 75:10:200 

据我所知, MaxSessionspipe理着连接到服务器的活动ssh连接数 – 即使来自一个IP号码,而MaxStartups涉及初始连接尝试(例如,试图login的人还没有提供密码)在这种情况下,我可以在启动时容纳75个,然后速度会下降10%,直到达到200的限制(所以我应该设置MaxSessions,这个数字是一样的吗?)

我正在使用密码authentication,并且rootlogin被禁用。 我们通常使用git bash shell从Windows 10机器login(尽pipe我也使用过putty来查看是否会有所作为,但是没有)。

无论如何,我是否在正确的轨道上处理login问题? 问题是我不能可靠地重现这一点。 这个问题似乎只发生在同一时间有一堆连接尝试的课堂上,我在其他时间login和注销没有任何麻烦,没有一个学生在其他时间报告过这个问题。

还有什么我可以尝试帮助诊断和解决这个问题? 我知道这似乎是一种错误,发生在很多人身上,而且我在这里读了一些,但是还没有find一个可行的解决方法。


UPDATE

所以当我用这个小脚本来重现这个问题的时候(把@RobbieMckennie给我这个想法)

 LIMIT=5 for i in $(seq $LIMIT) do echo echo "============================= ${i} ===================" ssh -vvv [email protected] echo done 

3次login后我会得到这个:

 $ ssh -vvv [email protected] OpenSSH_7.5p1, OpenSSL 1.0.2k 26 Jan 2017 debug1: Reading configuration data /etc/ssh/ssh_config debug2: resolving "xx.xx.xxx.xx" port 22 debug2: ssh_connect_direct: needpriv 0 debug1: Connecting to xx.xx.xxx.xx [xx.xx.xxx.xx] port 22. debug1: connect to address xx.xx.xxx.xx port 22: Connection refused ssh: connect to host xx.xx.xxx.xx port 22: Connection refused 

事实上,如果我一次又一次地快速login3次,我就能够“重复”这个“第四次尝试”。 原始的IP号码在fail2ban( jail.local )中的忽略列表中,并且似乎尽可能地工作

 2017-10-12 07:38:04,481 fail2ban.filter [52845]: WARNING Determined IP using DNS Lookup: c-yy-yy-yy-yyy.hsd1.il.comcast.net = ['yy.yy.yy.yyy'] 2017-10-12 07:38:04,482 fail2ban.filter [52845]: INFO [sshd] Ignore yy.yy.yy.yyy by ip 

尽pipe我不确定警告是否意味着什么。

所以,有两个问题:

  1. 什么是造成这种拒绝? 据我所知,我甚至没有进入系统。 有没有我需要调整的configuration设置?

  2. 更重要的是,当我的22名学生全部尝试从校园login时,由于我们的多对一NAT,所有这些连接都源自相同的IP号码,这是否可以解释这一点? 在我看来,它可能(?)

唯一不同的是,当这个拒绝发生的时候,学生需要15分钟左右的时间才能login,而在上面的实验中,我会在几秒钟之内回来。 这可能是由于某种积压?

特别是这个条目,我刚刚在IPtables中发现了这个条目

 Chain INPUT_direct (1 references) target prot opt source destination tcp -- anywhere anywhere tcp dpt:ssh state NEW recent: SET name: DEFAULT side: source mask: 255.255.255.255 REJECT tcp -- anywhere anywhere tcp dpt:ssh state NEW recent: UPDATE seconds: 30 **hit_count: 4** name: DEFAULT side: source mask: 255.255.255.255 reject-with tcp-reset 

这可以解释3次login的限制,但是我不确定这是否能解释校园中15分钟左右的等待时间,以便在遇到此问题时重新login。