2017-07-27 192 views
-1

我想將舊的Gitlab存儲庫(本地計算機)導入到Internet上託管的新服務器中。我建立了反向隧道,然後我可以從新的Gitlab安裝中導入它。SSH反向通道無法綁定1024以下的端口

ssh -N -R 192.168.1.1:8080:gitlab.office.server:80 linode-gitlab 

因爲這個https://gitlab.com/gitlab-org/gitlab-ce/issues/28628#note_30130063我不能在URL中包含端口號。所以我的選擇是綁定到端口80.

ssh -N -R 192.168.1.1:80:gitlab.office.server:80 [email protected] 
Warning: remote port forwarding failed for listen port 80 

它失敗。我甚至嘗試它像上面那樣登錄,但仍然無法使其工作。

僅供參考,我已經修改sshd_config以包含GatewayPorts clientspecified,所以我可以綁定到指定的IP地址。

如何在遠程機器上執行反向隧道和綁定端口< 1024?

+1

默認情況下,只有'root'用戶可以綁定到Linux下1024以下的端口。查看[這個問題](https://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-on-Linux)for some解決方法。 – Phylogenesis

+2

也許已經有一個服務在端口80上監聽。通常的嫌疑人可能是apache或nginx。 – DrHopfen

+0

@Phylogenesis編輯了這個問題。我試圖以root身份登錄,但結果仍然相同。 – rioastamal

回答

-1

已解決。

沒有意識到Gitlab綁定到所有接口0.0.0.0:80。

$ sudo netstat -ntap | grep LISTEN 
tcp  0  0 0.0.0.0:25    0.0.0.0:*    LISTEN  14432/master  
tcp  0  0 0.0.0.0:443    0.0.0.0:*    LISTEN  1899/nginx  
tcp  0  0 0.0.0.0:8060   0.0.0.0:*    LISTEN  1899/nginx  
tcp  0  0 0.0.0.0:21212   0.0.0.0:*    LISTEN  3842/sshd  
tcp  0  0 127.0.0.1:9121   0.0.0.0:*    LISTEN  1948/redis_exporter 
tcp  0  0 127.0.0.1:9090   0.0.0.0:*    LISTEN  1931/prometheus 
tcp  0  0 127.0.0.1:9187   0.0.0.0:*    LISTEN  1911/postgres_expor 
tcp  0  0 127.0.0.1:9100   0.0.0.0:*    LISTEN  1906/node_exporter 
tcp  0  0 0.0.0.0:80    0.0.0.0:*    LISTEN  1899/nginx  
tcp  0  0 127.0.0.1:9168   0.0.0.0:*    LISTEN  1875/ruby  
tcp6  0  0 :::21212    :::*     LISTEN  3842/sshd  
tcp6  0  0 ::1:9168    :::*     LISTEN  1875/ruby 

後,我改變Gitlab配置不聽我能夠創造出結合192.168.1.1:80遠程機器上的SSH反向隧道的所有接口。