2016-11-17 43 views
4

我們在AWS classic ELB後面運行兩個gitlab實例。要啓用git SSH通過git推送和負載均衡SSH請求,我們在AWS ELB中添加了SSH TCP端口偵聽器。在SSH日誌中,我們看到ELB的ips不是git用戶的實際IP地址。我試圖在ELB上爲SSH監聽器啓用代理協議,但它破壞了SSH服務器。有沒有辦法看到真正的客戶?如何查看運行在AWS後面的SSH服務器的SSH客戶端的真實IP ELB

Nov 16 08:38:41 gitlab-1-1b sshd[14760]: Bad protocol version identification 'PROXY TCP4 x.y.z.a 0.0.0.0 61533 22' from x.y.z.a port 9407 
Nov 16 08:39:08 gitlab-1-1b sshd[14825]: Bad protocol version identification 'PROXY TCP4 x.y.z.a 0.0.0.0 61554 22' from x.y.z.a port 9417 

回答

3

作爲mentioned here,一個ELB(彈性負載平衡,這確實support multiple listener protocols):

充當轉發代理(即,源不保留IP)

因此,您所剩下的只是ELB Access Logs(如mentioned there),因爲X-Forwarded-For是「應用程序級」協議,不適用於s sh本地。

所以用ssh並不容易。


啓用通過HTTPS偵聽相同GitLab服務將至少讓你把該用戶的IP在X-Forwarded-For通過代理SSL支持,discussed in this GitLab thread,或this one
請注意,recent GitLab (8.10 or more) would then require

proxy_set_header X-Forwarded-Proto https; 
proxy_set_header X-Forwarded-Ssl on; 
proxy_set_header X-Forwarded-Port 443;