因此,我一遍又一遍地重复了相同的过程,并且每次都运行正常,但在特定的服务器上就是不行。
我尝试过互联网上的任何书面建议 + 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
如果你想保持客户端的存活,
做同样的事情,但是不要“主持人 *”