我使用密钥(而不是密码)通过 ssh 进入服务器,但我的 IP 地址经常被服务器禁止。
查看服务器 auth.log 后,我发现每隔 10-20 分钟就会有人(或某些软件)尝试使用错误的密码进行 ssh。
Jun 15 21:23:26 www sshd[31046]: Failed password for git from 218.81.128.80 port 37012 ssh2
Jun 15 21:23:26 www sshd[31046]: error: maximum authentication attempts exceeded for git from 218.81.128.80 port 37012 ssh2 [preauth]
Jun 15 21:23:26 www sshd[31046]: Disconnecting authenticating user git 218.81.128.80 port 37012: Too many authentication failures [preauth]
Jun 15 21:33:26 www sshd[31931]: Failed password for git from 218.81.128.80 port 37146 ssh2
Jun 15 21:33:26 www sshd[31931]: Failed password for git from 218.81.128.80 port 37146 ssh2
Jun 15 21:33:26 www sshd[31931]: error: maximum authentication attempts exceeded for git from 218.81.128.80 port 37146 ssh2 [preauth]
Jun 15 21:33:26 www sshd[31931]: Disconnecting authenticating user git 218.81.128.80 port 37146: Too many authentication failures [preauth]
Jun 15 21:53:26 www sshd[870]: Failed password for git from 101.81.237.208 port 37384 ssh2
Jun 15 21:53:26 www sshd[870]: Failed password for git from 101.81.237.208 port 37384 ssh2
Jun 15 21:53:26 www sshd[870]: error: maximum authentication attempts exceeded for git from 101.81.237.208 port 37384 ssh2 [preauth]
Jun 15 21:53:26 www sshd[870]: Disconnecting authenticating user git 101.81.237.208 port 37384: Too many authentication failures [preauth]
我正在使用pycharm/phpstorm等,并在我的服务器上创建了一个Git服务器。
我检查了这两个软件包的设置,但不知道发生了什么。我甚至换了电脑,但没有任何变化。
答案1
事实上,我找到了答案。
这是一个名为Git 集成。
我禁用该插件后,问题就解决了。
答案2
sudo lsof | grep ssh | grep git| grep IPv4
在执行此操作的客户端计算机上应该会告诉您当时正在执行什么操作。
lsof 会告诉你什么正在使用文件(在 *nix 中一切都是文件)。我们正在过滤 ssh 和你的用户名以及 IPv4 连接
你需要这样做尽管您的系统正在尝试登录。
简单地删除 git 用户可能会隐藏问题 - 因为某物运行该程序即可将 ssh 连接到另一台机器。
答案3
我知道你已经解决了你的问题,但我还有另一个想法想提一下。
您可以用记录父 PID 的 shell 脚本替换原始 SSH 可执行文件,然后执行原始 SSH。
没有测试过但是应该可以像这样工作:
#!/bin/bash
echo $(date) $PPID $* >> recordfile.log
exec ssh.orig "$@"