解决 ssh_exchange_identification 问题

服务器环境:ubuntu 20.04.5 LTS
前提:

  1. 拥有访问远程服务器的必要权限
  2. 具有 root 或 sudo 权限的用户帐户

一、ssh_exchange_identification

问题描述: 远程服务器阻止了尝试建立或维护的 SSH 连接
问题展示:
Data could not be sent to remote host “172.xxx.xxx.xxx”. Make sure this host can be reached over ssh: mux_client_request_session: session request failed: Session open refused by peer
kex_exchange_identification: read: Connection reset by peer
请添加图片描述问题原因:
远程服务器突然关闭了 TCP 流。 在大多数情况下,远程服务器的快速重启可能会解决临时中断或连接问题。

  • 由于基于主机的访问控制列表,连接被阻止
  • 入侵防御软件正在通过更新防火墙规则(Fail2ban、DenyHosts 等)来阻止 IP
  • 对 SSH 守护程序配置文件的更改

二、解决方法

1. 检查远程服务器的 hosts.deny 和 hosts.allow 文件

// 在远程服务器打开 hosts.deny 文件
sudo vim /etc/hosts.deny
// 查看自己的 ip 是否在文件中,在就删除,然后保存退出

hosts.deny 文件

// 在远程服务器打开 hosts.allow 文件
sudo vim /etc/hosts.allow

// 添加以下内容,注意换成自己的 ip 地址, 保存退出
sshd : xx.xx.xx.xx, LOCAL

2. 检查 fail2ban 是否禁止你的 ip 地址

// 使用以下命令检查 iptables 工具是否拒绝你尝试的连接:
sudo iptables -L --line-number

// 终端窗口中的输出将列出所有身份验证尝试。 
// 如果您发现防火墙确实阻止了您的 SSH 连接,您可以使用 fail2ban 将您的 IP 列入白名单。 
// 否则,该服务将不断阻止所有未来的尝试。 要访问 fail2ban 配置文件,请输入以下命令
sudo vim /etc/fail2ban/jail.conf

// 通过取消注释包含“ignoreip =”的行来编辑文件
// 添加要加入白名单的 IP 或 IP 范围。

jail-conf-file-fail2ban-edit

3. 检查 sshd_config 文件
sshd 配置文件能够更改基本设置,例如用于身份验证的默认 TCP 端口或 SSH 密钥对,以及更高级的功能,例如端口转发。

sshd_config例如,MaxStartups 变量定义系统在预定义时间段内接受的连接数。 如果你的系统在短时间内建立大量连接,则可能需要增加此变量的默认值。 否则,远程服务器可能会拒绝额外尝试的 ssh 连接

maxstartup: 限制处于联机页面的连接数,默认值10。联机页面就是当你登录ssh 时,还没输入密码的页面。

三元组参数形式:
10:30:60
10:当连接数达到10时就开始拒绝连接,不过不是全部拒绝
30:当连接数到达10时,之后的连接有30%的概率被拒绝掉
60:当连接数达到60时,之后的连接就全部拒绝了

所以可以修改三元组的第一个参数使它能够在短时间成功建立大量连接

// 使用以下命令打开 sshd_config 文件:
sudo vim /etc/ssh/sshd_config

// 修改完文件保存退出后,需要重新启动 sshd 服务 
service sshd restart

参考资料

猜你喜欢

转载自blog.csdn.net/Double_Horse/article/details/131186707
今日推荐