无法通过 SSH 从某些服务器的 Bitbucket 进行 git clone

无法通过 SSH 从某些服务器的 Bitbucket 进行 git clone

我们在 AWS 上托管了一个 Bitbucket Server 实例。从其他 AWS 服务器(在另一个区域)通过 SSH 进行 git clone 失败,并显示

ssh: connect to host (hostname) port 7999: Connection refused

但是,AWS 中的其他服务器(与 Bitbucket 服务器位于同一区域)可以使用相同的 URL 通过 SSH 成功克隆。

其他信息:

  • Bitbucket 肯定正在监听端口 7999:

    $ sudo netstat -tnlp | grep :7999
    
    tcp6 0 0 :::7999 :::* LISTEN 20707/java  
    

    (进程 20707 是主 Bitbucket 进程)

  • Bitbucket 在 Apache 后面运行,作为反向代理来提供 SSL。

  • 无法克隆的实例的端口 7999 上的 tcptraceroute 和 mtr 成功连接到端口 7999 上的 Bitbucket。
  • 无法连接的实例使用的密钥对的公钥被添加到 Bitbucket 上具有读取访问权限的存储库访问密钥中。
  • 在 AWS 安全组中,克隆实例的组允许所有出站连接,而 Bitbucket 服务器的组允许从端口 7999 上的任何位置进行连接。
  • 克隆实例上端口 7999 的 tcpdump 结果:

    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    
    16:56:53.348387 IP (tos 0x0, ttl 64, id 61715, offset 0, flags [DF], proto TCP (6), length 60)
    (cloning server's hostname).38606 > (bitbucket server's hostname).irdmi2: Flags [S], cksum 0x2799 (incorrect -> 0xb1db), seq 3675985409, win 26883, options [mss 8961,sackOK,TS val 1512892178 ecr 0,nop,wscale 7], length 0
    
    16:56:53.489908 IP (tos 0x0, ttl 252, id 37586, offset 0, flags [none], proto TCP (6), length 40)
    (bitbucket server's hostname).irdmi2 > (cloning server's hostname).38606: Flags [R.], cksum 0x24e4 (correct), seq 1472002966, ack 3675985410, win 26883, length 0
    
  • 从克隆服务器 ssh 到 Bitbucket 的结果:

     $ sudo ssh -vvv -p 7999 ssh://[email protected]
     OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013
     debug1: Reading configuration data /root/.ssh/config
     debug1: Reading configuration data /etc/ssh/ssh_config
     debug1: /etc/ssh/ssh_config line 56: Applying options for *
     debug2: ssh_connect: needpriv 0
     debug1: Connecting to stash.tddevops.com [172.24.16.201] port 7999.
     debug1: connect to address 172.24.16.201 port 7999: Connection refused
     ssh: connect to host stash.tddevops.com port 7999: Connection refused
    
  • 尝试克隆时,Bitbucket 服务器上的 tcpdump 不显示任何数据。

答案1

https://serverfault.com/a/288493/442063

您看到的“不正确”校验和是由于名为 TCP 校验和卸载的功能。操作系统不会预先计算传出 TCP 数据包的校验和字段,而是将其设置为 0,并留给 NIC 处理器进行计算。Wireshark FAQ 有更详细的解释。

这可能会有所帮助,但您的问题听起来像是防火墙问题。确保您没有在此托管的 AWS 服务器上运行内部防火墙不会有什么坏处。如果不知道您正在运行什么操作系统,我真的无法推测要查找什么。许多 Linux 操作系统都使用 iptables。例如,您可以看到这里如何关闭和禁用 Oracle Linux 或 Redhat Linux 的防火墙。

答案2

我发现了问题所在;这是我们安全部门防火墙的一个外部问题。克隆服务器或 Bitbucket 服务器上无需进行任何更改。

相关内容