Conexões proxy SSH

Conexões proxy SSH

Peço desculpas se isso foi perguntado antes, mas atualmente estou tentando encontrar uma solução que nos permita estabelecer conexões SSH de maneira semelhante à forma como um gateway RDP funcionaria. Para quem não conhece, o RDP Gateway permite essencialmente fazer proxy de conexões RDP por meio de outro servidor. A Área de Trabalho Remota autenticará de forma transparente com o servidor Gateway RDP e estabelecerá a conexão com o servidor endpoint a partir daí, permitindo que você se refira aos servidores endpoint por endereços IP privados ou nomes DNS internos, limitando sua exposição.

Atualmente, o que estou pensando é configurar o encaminhamento de porta por meio de SSH para que cada servidor que precisamos acessar atrás do proxy de túnel esteja em uma porta diferente que está sendo encaminhada pelo servidor de ponto intermediário. No entanto, isso não parece uma solução ideal, por isso estou interessado em saber se existe uma maneira melhor de fazer isso.

Responder1

Em termos de SSH você costuma falar sobre umhospedeiro bastiãoouservidor de salto- uma única máquina (normalmente na sua DMZ) que aceita conexões SSH de entrada e a partir da qual você pode fazer uma conexão SSH com os sistemas reais que você gerencia.

                                                                             ==> | Server1 |
 _________                             ___________                         /      ---------
| user PC |   ===(SSH on port 22)===> | jump host |  ===(SSH on port 22)== ==+>  | Server2 | 
 _________                             ___________                         \      _________
                                                                             ==> | Server3 |

Muitas vezes, para melhorar a segurança, o servidor de salto exigirá autenticação de fator duplo e/ou só aceitará sessões SSH de entrada após estabelecer uma conexão VPN.

Em vez de primeiro fazer login no host de salto e no prompt de comando iniciar a segunda sessão SSH, o OpenSSH permite que você configure isso em um único comando

Prefiro definir todas as configurações explicitamente ~/.ssh/configcom um alias curto para cada host. Dessa forma, não precisarei usar nenhum sinalizador de linha de comando e posso simplesmente digitar menos e usar ssh Destinatione pronto.

Host jumphost
    Hostname jumphost.example.com
    User serverfault
    ForwardAgent yes
    AddKeysToAgent yes
    UseKeychain yes                                  # Specific to OS X 
    IdentityFile ~/.ssh/id_rsa.jumphost

Host server1
    Hostname server1.int.example.com
    User hbruijn 
    ForwardAgent yes
    AddKeysToAgent yes
    UseKeychain yes                                  # Specific to OS X
    IdentityFile ~/.ssh/id_rsa.int.example.com
    ProxyJump jumphost

ProxyJumpé uma configuração relativamente nova que considero um pouco mais intuitiva de usar do que um arquivo ProxyCommand. Agora ssh server1faremos exatamente o que você precisa, primeiro crie uma sessão usando [email protected]como primeiro salto a partir do qual você faz o túnel para o próximo salto com opcionalmente uma chave ssh diferente e um nome de usuário diferente [email protected].

Você também pode usar o comando ProxyJump diretamente na linha de comando:

ssh -J [email protected] [email protected]

Uma abordagem diferente é discutida emestas perguntas e respostas

Responder2

A solução canônica é implantar IPv6 (e/ou VPN) e evitar esse tipo de solução alternativa para começar, mas se você não puder fazer isso hoje, isso será chamado de jump box ou bastion host ou termos semelhantes. É apenas uma máquina que você instala na qual seus usuários podem fazer login com ssh e, em seguida, fazer ssh em hosts internos aos quais essa caixa tem acesso à rede. O sshcomando ainda possui uma opção de linha de comando que automatiza a conexão por meio do host de salto.

     -J destination
             Connect to the target host by first making a ssh connection to
             the jump host described by destination and then establishing a
             TCP forwarding to the ultimate destination from there.  Multiple
             jump hops may be specified separated by comma characters.  This
             is a shortcut to specify a ProxyJump configuration directive.
             Note that configuration directives supplied on the command-line
             generally apply to the destination host and not any specified
             jump hosts.  Use ~/.ssh/config to specify configuration for jump
             hosts.

informação relacionada