Redirecionar o tráfego ssh para um usuário através de outra porta

2

É possível ter uma configuração como esta:

  • Um servidor que escuta conexões ssh na porta 22, como de costume
  • Para um usuário (digamos, git) redirecione todo o tráfego através de outra porta (2222, por exemplo)

Como resultado, o comando ssh git@host produzirá o mesmo resultado que ssh -p 2222 git@host .

Basicamente, eu tento ter um tipo de proxy reverso no ssh, mas como eu sei que não podemos usar sub-domínios para distinguir a conexão de entrada ssh, fiquei me perguntando se podemos realizar esse tipo de coisa com uma abordagem de usuário. p>

Editar:

A razão é que eu configurei um servidor gitolite em um contêiner Docker, então no final eu tenho um daemon ssh que escuta na porta 2222 para fins de git. Além disso, eu tenho um daemon ssh "regular" que escuta na porta 22 (e eu quero mantê-lo).

É claro que posso acessar o servidor git pela porta 2222 (se eu abri-lo do lado de fora), mas eu queria saber se eu posso usar o servidor ssh "regular" do remoto e então redirecioná-lo localmente para o "git "ssh para o usuário git .

Assim, o tráfego será algo assim para o usuário git:

client <==> 22:server:2222:git_container

    
por FabiF 08.09.2014 / 17:18

1 resposta

0

Um simples encaminhamento de porta TCP não pode fazê-lo: o nome de usuário é mencionado apenas no protocolo SSH, portanto, se você insistir em começar com ssh git@host , terá de haver dois handshakes completos de autenticação SSH. Eu não estou ciente de um proxy SSH genérico que poderia fazer isso de forma transparente. Você pode automatizar o segundo salto do lado do servidor, por exemplo fazendo um script de shell ssh -p 2222 localhost do shell do usuário no host externo. Mas isso não seria compatível com muitos benefícios do SSH, como port-forwarding, sftp, scp, ...

A melhor maneira seria personalizar o lado do cliente. Por exemplo. em ~ / .ssh / config

Host git_host
    Hostname host
    Port     2222
    Username git

e, em seguida, ssh git_host (em vez de ssh git@host ).

Se você tiver que percorrer primeiro o host externo (por exemplo, porque você não tem visibilidade direta para a porta 2222), então você pode usar estes truques aqui , por exemplo

Host git_host
    Hostname host
    Username git
    ProxyCommand ssh -q git@host nc -q0 localhost 2222

(pode não ser 100% correto, brincar com as opções)

    
por 09.09.2014 / 11:40