即使没有有效密钥,SSH 连接也会超时

即使没有有效密钥,SSH 连接也会超时

因此,我一遍又一遍地重复了相同的过程,并且每次都运行正常,但在特定的服务器上就是不行。

我尝试过互联网上的任何书面建议 + serverfault,但没有任何效果。

很快我需要从原始服务器克隆另一台服务器上的 git 存储库,但 ssh 连接不起作用。我尝试修复,但没有任何效果。

即使没有密钥,也会出现同样的错误:

ssh -p **** -vvv git@*host.domain*
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to *host.domain* [***.***.***.***] port ****.
debug1: connect to address ***.***.***.*** port ****: Connection timed out
ssh: connect to host *host.domain* port ****: Connection timed out

另外,我在网上搜索修复方法后发现一个奇怪的现象:我无法重新启动 ssh,因为它通常显示为sudo service ssh restart,只有 才显示sudo service sshd restart。不确定是否有相关内容。

答案1

如果连接超时而不是立即被拒绝,则很可能是某种防火墙问题。显然,我无法知道您的客户端和服务器之间有哪些设备,因此这个答案仅限于服务器本身的防火墙。

如果你不介意暂时禁用主机防火墙,你可以通过以下方式测试

# iptables-save > /tmp/ipt
# iptables -F
...再次尝试您的 ssh 连接...
# iptables-restore < /tmp/ipt

如果这样可以解决问题,您将必须查看输出以iptables -nvL找出哪条规则阻止了您的连接。

如果仍然有问题,可能是sshd由于某种原因,服务器本身断开了连接。您可以尝试在服务器上运行

# tcpdump 主机 [客户端地址] 和端口 22

尝试连接时查看流量是否真正到达。如果在尝试连接时没有看到任何内容出现,并且您已经执行了iptables -F,则可能是某些中间设备导致了流量丢失。

答案2

暂时将以下行放置在/etc/sysctl.conf上述服务器上

net.ipv4.tcp_window_scaling = 0

禁用 TCP 窗口缩放。尝试此操作,特别是如果tcpdump(如 Flup 所建议的)显示启动 TCP 连接的前三个数据包已交换。

答案3

您的会话与另一端的主机之间可能有多个防火墙。您可能希望确认相关端口是否可以访问。

其中一种方法是运行 nmap

nmap host.domain

输出将如下所示:

Starting Nmap 5.51 ( http://nmap.org ) at 2013-03-13 07:32 EDT
Nmap scan report for host.domain (10.10.10.10)
Host is up (0.00023s latency).
rDNS record for 10.10.10.10: host.domain
Not shown: 998 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
111/tcp open  rpcbind
MAC Address: E0:DB:55:00:00:01 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 1.21 seconds

在此示例中,您可以看到两个端口是打开的,其中一个是 22,该端口通常与 ssh 关联。

这将允许您确认从您的服务器到其他主机有一条路径。

更多信息请访问nmap 的网站

另外, sshd 是 ssh 守护进程的名称,也是在 /etc/init.d 中找到的管理 sshd 守护进程的脚本。 service 命令使用在 redhat、centos 和类似发行版上的 /etc/init.d 中找到的脚本的名称,因此:

service sshd restart

答案4

在服务器上编辑/etc/ssh/ssh_config

插入以下内容:

Host *
    ServerAliveInterval 300
    ServerAliveCountMax 2

这将每 300 秒发送一次保持活动信号,最多发送 2 次。如果您喜欢将其设置为 infiniti服务器存活数上限至 0

如果你想保持客户端的存活,
做同样的事情,但是不要“主持人 *”

相关内容