将git用户的sshd向前登录到(GitLab)Docker容器

kwi*_*zzn 9 git ssh sshd gitlab docker

我想在我的主机上配置sshd,以将某个用户的公钥登录转发到运行自己的sshd服务的Docker容器.

为了给出一些上下文,我让GitLab在Docker容器中运行,我不喜欢在主机上打开另一个端口进行SSH GitLab通信,而是让主机上的sshd重定向用户并直接键入GitLab在本地暴露的端口机.

我的想法是做这样的事情:

Match User git
  ForceCommand ssh -p <GitLab port> <some arguments that forward to> git@localhost
  ...
Run Code Online (Sandbox Code Playgroud)

非常感谢帮助!

kwi*_*zzn 10

我发现了一个简单的解决方法.只需在主机上创建一个Git用户,并提供一个代理脚本,该脚本使用主机的SSH守护程序和.ssh/authorized_keys容器卷在GitLab容器中执行给定的Git命令.

  1. 在主机上,git使用与GitLab docker容器(998)中相同的UID和GID 添加用户,并将GitLab data目录设置为用户的主目录:

    useradd -u 998 -s /bin/bash -d /your/gitlab/path/data git
    
    Run Code Online (Sandbox Code Playgroud)
  2. git用户添加到docker组

    usermod -G docker git
    
    Run Code Online (Sandbox Code Playgroud)
  3. /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell使用以下内容在主机上添加代理脚本:

    #!/bin/bash
    docker exec -i -u git <your_gitlab_container_id> sh -c "SSH_CONNECTION='$SSH_CONNECTION' SSH_ORIGINAL_COMMAND='$SSH_ORIGINAL_COMMAND' $0 $1"
    
    Run Code Online (Sandbox Code Playgroud)