Ssh

無法從某些伺服器的 Bitbucket 通過 SSH 進行 git 複製

  • November 7, 2017

我們有一個託管在 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。
  • tcptraceroute 和 mtr 在埠 7999 上從無法複製到埠 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’ing 到 Bitbucket 的結果:
$ sudo ssh -vvv -p 7999 ssh://git@stash.tddevops.com
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 不顯示任何數據。

我發現了這個問題;這是我們安全部門防火牆的外部問題。無需在複製伺服器或 Bitbucket 伺服器上進行任何更改。

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

由於稱為 TCP 校驗和解除安裝的功能,您會看到“不正確”的校驗和。傳出 TCP 數據包的校驗和欄位不是由作業系統預先計算的,而是設置為 0 並留給 NIC 處理器計算。Wireshark FAQ 有更詳細的解釋。

這可能會有所幫助,但您的問題聽起來像是防火牆問題。確保您沒有在此託管 AWS 伺服器上執行內部防火牆並沒有什麼壞處。在不知道您正在執行什麼作業系統的情況下,我無法真正推測要尋找什麼。許多 Linux 作業系統都使用 iptables。例如,您可以在此處查看如何關閉和禁用 Oracle Linux 或 Redhat Linux 的防火牆。

引用自:https://serverfault.com/questions/880676