我有安裝了Docker引擎的運行Ubuntu 16.04的服務器。如何根據請求的域將SSH轉發到GitLab Docker容器
在一個容器我跑GitLab服務(以及其他的東西當然還有很多其他容器)。我們稱之爲Docker網絡地址GITLAB_IP
。
我使用nginx-proxy代理來自外部的基於VIRTUAL_HOST
環境變量的HTTP請求。
DNS設置,所以一切針對*.mydomain.com
去mydomain.com
和在同一主機上得到解決。
去我mydomain.com
的請求由我的主要nginx容器提供,而請求去gitlab.mydomain.com
由我的GitLab容器提供服務。
在端口80(和443)上一切正常。
現在我想能夠通過ssh使用git。我正在努力實現的是,如果我做
> ssh mydomain.com
我將在我的主機服務器的終端而告終。如果我做
> ssh gitlab.mydomain.com
然後我想在GitLab容器的終端結束。
我知道我可以映射主機上的一些未使用的端口上的容器的端口22,所以我能夠通過SSH-ING於如訪問容器。端口10022,但我更喜歡它乾淨清晰。
有什麼辦法讓主機上的ssh服務器以某種方式充當代理,當檢測到特定的域時?
有沒有可能設置SSH守護進程(或者某些登錄腳本?)來處理基於用戶名的重定向?考慮到將始終只有一個GitLab實例,我想知道是否可以將它重定向/重新連接/隧道用戶'git'到GitLab容器。 –
是的,這應該是可行的。你可以設置一個運行openssh的「機器」,它有多個用戶。每個用戶都可以在服務器端擁有自己的強制命令,該命令將執行相應的ssh命令將其放入適當的位置。 – programmerq
感謝您的回覆。似乎[這可能是解決方案](http://stackoverflow.com/questions/33042817/have-sshd-forward-logins-of-git-user-to-a-gitlab-docker-container)對我來說。 –