解决 SSH 连接不断超时的问题

解决 SSH 连接不断超时的问题

我正在尝试排除无法从 Unix 计算机连接到远程 SFTP 的原因。远程主机有我的公钥,并且我的防火墙配置为允许到该主机的出站连接。

我检查了主机是否已启动并使用nmap -Pn -p 22 $HOST,并得到以下结果:

Host is up.
rDNS record for $HOST
PORT   STATE    SERVICE
22/tcp filtered ssh

我尝试通过命令行连接到它,每次连接都会超时。我可以看到出站连接正在进行,但没有响应。

以下是我尝试通过命令行连接的方法:

timeout 30 ssh -i ~/.ssh/my_private_key user@$HOST

我也尝试将私钥复制/粘贴到纯文本文件中并使用:

timeout 30 ssh -i ~/.ssh/my_private_key.txt user@$HOST

$ ssh -vvv -i ~/.ssh/my_private_key user@$HOST
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug2: resolving "$HOST" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to $HOST [$HOST] port 22.
debug1: connect to address $HOST port 22: Connection timed out
ssh: connect to host $HOST port 22: Connection timed out

在指责主机做错事之前,我还应该做些什么来排除我这边的连接故障吗?

答案1

您需要将客户端配置为允许新的出站,但也允许在同一端口上对已建立的连接进行入站。在主机上,您需要允许该端口上的入站新连接以及同一端口上已建立的连接的出站连接。

例子:

(这将允许适合主机的传入 SSH 连接)

sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

(这将允许适合客户端的传出 SSH 连接)

sudo iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

sudo iptables -A INPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

相关内容