Tornar o servidor SSH para encaminhar a conexão por usuário

4

Existe alguma maneira de forçar o OpenSSH (ou criar um proxy de algum tipo) para encaminhar um usuário para uma máquina e outro usuário para outra máquina apenas pelo nome de usuário que ele (ou ela) forneceu?

Tenho o seguinte problema: vou executar o GitLab no contêiner Docker e simultaneamente o servidor SSH na máquina host. O GitLab ouve conexões SSH, mas está interessado apenas em clientes diferenciadores de usuários "git" por chaves SSH. Portanto, a configuração que gostaria de criar é uma das seguintes:

  1. Um proxy na porta 22 na máquina host que encaminha a sessão inteira para o Docker Gitlab quando o usuário é "git" ou para o host SSH (pode ouvir outra porta, o importante é que o cliente não está ciente disso) quando o nome de usuário é diferente.
  2. O host SSH manipula todos os usuários, exceto "git" internamente e encaminhando a sessão para o contêiner do Docker quando o nome de usuário é "git".

Só para esclarecer: o contêiner do Docker executa uma ponte e pode ser acessado a partir do host pelo endereço IP exclusivo diferente do IP do host.

Houve uma pergunta semelhante no StackOverflow ( link ), mas não houve resposta que resolvesse esse problema - o mais útil foi o que sugeria shell customizado, mas não encontrei nenhuma maneira de criar algo assim.

    
por Mikz 06.06.2016 / 23:15

1 resposta

0

O tunelamento de porta TCP do SSH é configurado pelo cliente ssh. No servidor, você só pode limitar a configuração de encapsulamento usando permitopen=host:port em authorized_keys.

Outra forma de redirecionar o tráfego seria usar o Netfilter / iptables com -m owner --uid-owner $UID e o destino DNAT.

    
por 06.06.2016 / 23:33