我正在使用代码部署服务,该服务连接到我的服务器并执行命令。它连接、运行一些命令、断开连接并重复。
在同一部署中,我总是在第 8 次连接时收到拒绝连接的消息。
从服务本身来看,我所能看到的是ssh: connect to host xxx port 22: Connection refused
我只看到连接和断开连接/var/log/auth.log
——没有连接被拒绝错误。
作为参考,这是我所看到的auth.log
:
Accepted publickey for envoyer from 159.203.66.107 port 50177 ssh2: RSA
...
Received disconnect from 159.203.66.107 port 50177:11: disconnected by user
Disconnected from 159.203.66.107 port 50177
pam_unix(sshd:session): session closed for user envoyer
Removed session 5996.
... repeated
我如何才能知道它拒绝连接的原因?
我正在使用 DigitalOcean LAMP 服务器。
答案1
我遇到了类似的问题,请检查你的 IPtables(iptables -L
)并查看是否有一hitcount
组类似于此的内容(第二行):
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
关键参数是hit_count
,也看一下UPDATE。
就我的情况来说,我尝试了 3 次之后都被拒绝了,而且日志中也没有任何内容。
答案2
在具有 Docker 镜像的 Digital Ocean 服务器上,我们也遇到了同样的问题。
在日志中清楚显示为:
$ sudo grep UFW /var/logs ... Sep 11 08:29:21 <hostname> kernel: [5334027.195168] [UFW LIMIT BLOCK] IN=eth0 OUT= MAC=96:38:e8:52:00:e7:f4:a7:39:d7:82:7d:08:00 SRC=xx.xx.xx.xx DST=xx.xx.xx.xx LEN=60 TOS=0x00 PREC=0x00 TTL=54 ID=30729 DF PROTO=TCP SPT=53180 DPT=22 WINDOW=29200 RES=0x00 CWR ECE SYN URGP=0
看起来服务器设置了以下功能:
ufw limit ssh
如下所述https://www.cyberciti.biz/faq/howto-limiting-ssh-connections-with-ufw-on-ubuntu-debian/
由于我们只使用 ssh 密钥而不使用密码,因此我们的解决方法是将 LIMIT 规则更改为 ALLOW 规则。
root@hostname:/var/log# sudo ufw status Status: active To Action From -- ------ ---- 22 LIMIT Anywhere
... root@hostname:/var/log# sudo ufw allow ssh Rule updated Rule updated (v6) root@hostname:/var/log# sudo ufw status Status: active To Action From -- ------ ---- 22 ALLOW Anywhere