Ubuntu 如何根据请求的域将SSH转发到GitLab Docker容器中
我的服务器运行Ubuntu 16.04,安装了Docker引擎 在一个容器中,我运行服务(当然还有许多其他包含其他内容的容器)。我们把它叫做Docker网络地址Ubuntu 如何根据请求的域将SSH转发到GitLab Docker容器中,ubuntu,docker,ssh,proxy,portforwarding,Ubuntu,Docker,Ssh,Proxy,Portforwarding,我的服务器运行Ubuntu 16.04,安装了Docker引擎 在一个容器中,我运行服务(当然还有许多其他包含其他内容的容器)。我们把它叫做Docker网络地址GITLAB\u IP 我使用基于VIRTUAL\u HOST环境变量代理来自外部的HTTP请求 DNS已设置,因此针对*.mydomain.com的所有内容都将转到mydomain.com并在同一主机上解析 前往mydomain.com的请求由我的主nginx容器提供服务,而前往gitlab.mydomain.com的请求由我的gitl
GITLAB\u IP
我使用基于VIRTUAL\u 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连接到例如端口10022来访问容器,但我更喜欢干净和清晰
有没有办法让主机上的ssh服务器在检测到特定域时以某种方式充当代理?与HTTP或启用SNI的TLS服务不同,ssh服务没有任何基于名称的逻辑检测 它的长短不一之处在于,每个ip/端口都有一个ssh守护进程 有一些变通办法可能奏效 左舷撞击是一种可能性。您可以根据发送的敲门声更改防火墙将您转发到的服务 您可以做的另一件事是设置一个.ssh/authorized_keys文件,该文件将识别您使用的ssh密钥,然后强制执行一个命令,该命令将启动一个新的ssh进程,并让您使用正确的相应服务
您还可以在不同的端口上运行每个ssh服务,并让客户端配置文件处理名称->端口映射。是否可以设置ssh守护程序(或某些登录脚本?)以处理基于用户名的重定向?考虑到总是只有一个GitLab实例,我想知道是否可以让它重定向/重新连接/将用户
git
隧道到GitLab容器。是的,这应该是可行的。您可以设置一台运行openssh的“机器”,该机器有多个用户。每个用户都可以在服务器端拥有自己的强制命令,该命令将执行适当的ssh命令,以将它们放到适当的位置。感谢您的回复。对我来说好像是。