Incluir encaminhamento remoto no SSH ProxyCommand

0

Então eu tenho 3 servidores:

  • server_a: meu servidor de destino
  • server_b: um servidor de salto
  • server_c: outro servidor

Nem o server_a nem o server_b normalmente têm acesso ao server_c. No entanto, posso usar a mágica do encaminhamento remoto para fornecer server_c com uma porta específica no server_a. O seguinte comando faz isso:

ssh -t -A -R 6880:server_c:22 server_b ssh -t -A -R 6880:localhost:6880 server_a

Eu quero converter esse comando volumoso em configurações equivalentes de ssh_config. Eu posso obter a conexão básica ssh / scp trabalhando através do uso de um comando de proxy:

host server_b
  Hostname 192.X.X.X
  User john
  IdentityFile /path/to/identity_file
  ForwardAgent yes

Host server_a
  Hostname 172.X.X.X
  User john
  ProxyCommand ssh -W %h:%p server_b

Mas as configurações acima não fazem nenhum encaminhamento remoto, e server_a não tem acesso ao server_c. Eu tentei adicionar em linhas RemoteForward para conseguir isso:

host server_b
  Hostname 192.X.X.X
  User john
  IdentityFile /path/to/identity_file
  ForwardAgent yes
  RemoteForward 6880 server_c:22

Host server_a
  Hostname 172.X.X.X
  User john
  ProxyCommand ssh -W %h:%p server_b
  RemoteForward 6880 localhost:6880

Se eu ssh diretamente em server_b, parece que o encaminhamento remoto para server_c é bom, mas quando eu ssh direto em server_a do meu laptop, o acesso ao server_c através do encaminhamento remoto parece não funcionar.

Qualquer sugestão seria apreciada

    
por pca2 27.10.2017 / 20:12

1 resposta

0

ProxyCommand não é o mesmo que usar ssh server_b ssh server_a . Ele permite que o segundo ssh client execute localmente e simplesmente fale o protocolo SSH por meio de um túnel.

Assim, você não precisa de nenhum parâmetro de encaminhamento para o host de salto, somente para a conexão final:

Host server_a
    ProxyCommand ssh -W %h:%p server_b
    RemoteForward 6880 server_c:6880

Host server_b
    # no RemoteForward
    # no ForwardAgent, either!

Além disso, se você atualizar seu cliente OpenSSH local para 7.3 ou posterior, poderá usar a opção -J (também conhecida como ProxyJump) como um atalho. Por exemplo, isso é igual à configuração acima:

Host server_a
    ProxyJump server_b
    RemoteForward 6880 server_c:6880

O mesmo na linha de comando:

$ ssh -R 6880:server_c:6880 -J server_b server_a
    
por 27.10.2017 / 20:31