使用Fork操作Hetzner云端Git仓库时反复被fail2ban封禁求助
解决Fork操作Git仓库时反复被fail2ban封禁的问题
1. 先定位封禁的具体触发原因
从服务器日志入手,明确fail2ban封禁IP的触发逻辑:
- 查看SSH服务日志:Debian/Ubuntu系统执行
sudo tail -f /var/log/auth.log,CentOS/RHEL执行sudo tail -f /var/log/secure,搜索你的公网IP,查看是否有连续的失败登录记录,重点关注失败原因(密钥验证错误、用户不存在、密码错误等)。 - 查看fail2ban日志:执行
sudo tail -f /var/log/fail2ban.log,找到你的IP对应的封禁记录,确认触发的规则类型(比如sshd-auth-failure或sshd-invalid-user)。
2. 排查Fork软件的异常连接
即便关闭了自动拉取,Fork仍可能存在后台行为导致封禁:
- 打开Fork偏好设置,进入「Git」-「SSH」选项,确认密钥路径配置正确,无错误的SSH代理或命令设置。
- 完全关闭Fork,观察是否还会被封禁。若关闭后封禁停止,说明问题出自Fork:
- 检查所有克隆仓库的远程URL:在仓库目录执行
git remote -v,确认SSH格式的URL无拼写错误,且对应公钥已添加到服务器的~/.ssh/authorized_keys文件中。 - 清除Fork缓存:找到
%APPDATA%\Fork目录,备份后删除缓存文件,重启Fork测试。
- 检查所有克隆仓库的远程URL:在仓库目录执行
3. 排查Windows系统的后台SSH进程
若关闭Fork后仍被封禁,说明是系统内其他进程在发起SSH连接:
- 打开CMD,执行
netstat -ano | findstr ":22",列出所有连接到22端口的进程,记录对应PID。 - 打开任务管理器,通过PID定位进程,确认是其他Git客户端、OpenSSH代理还是系统服务在发起连接。
- 暂时关闭可疑进程,观察封禁是否停止。
4. 调整fail2ban规则避免误封
若确认是合法连接被误判,可调整fail2ban配置:
- 编辑sshd jail配置:执行
sudo nano /etc/fail2ban/jail.d/sshd.conf(无文件则新建),在[sshd]段添加你的IP到白名单:
替换ignoreip = XX.XX.XX.XXXX.XX.XX.XX为你的公网IP,fail2ban将直接忽略该IP的所有尝试。 - 也可调整封禁阈值:将
maxretry(默认5)改为更大值,或延长findtime(比如findtime = 3600,表示1小时内超过阈值才封禁),修改后重启fail2ban:sudo systemctl restart fail2ban
5. 确认Git凭证与远程配置
- 清理Git凭证缓存:若曾切换SSH/HTTPS协议,可能存在旧凭证冲突。执行
git config --global credential.helper manager-core(Windows新版)或git config --global credential.helper wincred(旧版),清除旧缓存后重新验证SSH密钥。 - 检查服务器端权限:确保
~/.ssh/authorized_keys文件权限为600,所属用户为仓库所有者,避免因权限问题导致密钥验证失败。
内容的提问来源于stack exchange,提问作者Flo H
相关产品推荐
相关产品推荐

