ssh conexão do servidor através de outro servidor (A-B-C)

1

Eu tenho 3 servidores, vamos chamá-los de A, B e C

O servidor C está protegido por um firewall e somente o servidor B pode se conectar a ele. Servidor B e C estão sob meu controle.

Agora eu quero que o servidor A se conecte ao servidor C através do servidor B: A - > B - > C

O problema é que não posso alterar o comando no servidor A, que provavelmente é apenas um simples usuário ssh @ B.

Estou tentando encaminhar a conexão incomming usando a opção de comando em authorized_keys:

command="ssh user@C" ssh-rsa KEY

Sempre que A faz uma conexão com B, eu posso ver que uma conexão é feita para C, mas A não parece perceber isso e o tempo limite.

Eu tentei adicionar as opções -t, -t -t, -T ou -N ao comando ssh, mas sem sucesso. Existe alguma maneira de prever a conexão ssh de uma maneira que o servidor A acha que ele está se comunicando com o servidor B.

A conexão entre B e C precisa ser acionada quando A faz a conexão com B e fecha quando A fecha a conexão.

Toda a autenticação é feita usando chaves.

[editar]

Para esclarecer: Eu não posso controlar o comando no servidor A, mas como é agora, A se conecta a B e, em seguida, B abre uma conexão para C. O problema aqui é dat A não reconhece essa nova conexão. Eu acho que não obtém um prompt ou algo assim para que A saiba que existe uma conexão.

Se eu usar essa configuração manualmente com

ssh user@B

funciona e estou logado diretamente no C.

    
por Nin 13.10.2016 / 14:17

2 respostas

1

O que você está procurando é um túnel SSH.

ssh -f user@B -L 2000:C:22

Isso se conecta ao servidor B, vai diretamente para o plano de fundo com -f e, em seguida, abre a porta 2000 no host local com L . Tudo o que é enviado para esta porta no host local é encaminhado para a porta 22 em C. Então, uma vez que você inseriu este comando, você pode fazer

ssh localhost -p 2000

Que conectará você a C.

Atualizar

Parece que eu te entendi errado, desculpe. Se você não pode alterar o comando em A, você ainda pode especificar o que deve acontecer no login, alterando o ~/.bashrc do usuário.

    
por 13.10.2016 / 14:37
1

No diretório home do usuário no servidor B, você adicionaria uma última linha ao arquivo ~/.login (ou criaria se não existisse) para executar o segundo ssh userc@hostC .

Por favor, não use ~/.bashrc : enquanto o primeiro é usado após logins, o último é usado para cada execução bash, mesmo aquele em scripts começando com #!/bin/bash .

    
por 13.10.2016 / 15:45