Host de salto SSH SEM encaminhamento de agente

Host de salto SSH SEM encaminhamento de agente

Embora seja uma pergunta simples, procurei por dias sem sucesso.

M = My machine 
J = Jump Host
S = Server

Jump Host has my public key on authorized_keys.
Server has J's public key on authorized_keys.

Allowed connections (due to key authentication):
M -> J
J -> S

Como é possível fazer ssh em S da minha máquina?

Minha configuração atual é:

host jump
  user root
  HostName x.x.x.x

host server
  user root
  HostName x.x.x.x
  port 22
  ForwardAgent no
  ProxyCommand ssh jump -W %h:%p

Não funciona porque tenta fazer login com a chave de M.

Aqui está o log ssh

debug1: Host 'x.x.x.x' is known and matches the ECDSA host key.
debug1: Found key in /Users/xxxxx/.ssh/known_hosts:1542
...
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/xxxxx/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/xxxxx/.ssh/id_dsa
debug1: Trying private key: /Users/xxxxx/.ssh/id_ecdsa
debug1: Trying private key: /Users/xxxxx/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).
Killed by signal 1.

Responder1

O problema é que ele está tentando usar minha chave (M) para autenticar em S quando deveria usar a chave de J. Não consigo especificar a chave a ser usada com o IdentityFile, pois está em J e não na minha máquina.

Bem, esse é o seu problema. A conexão com o host de salto e com o destino final é iniciada diretamente do seu cliente nesta configuração. Seu cliente deve ter a chave correta para ambos os sistemas.

O ssh jump -W %h:%pcomando proxy inicia uma sessão ssh para seu host de salto, mas não cria um shell, apenas cria um túnel diretamente para o host de destino. Então seu cliente faz um ssh no túnel. Em nenhum momento um shell é iniciado no host de salto que permitiria acessar quaisquer chaves armazenadas nesse host intermediário neste tipo de configuração. Brincar com o encaminhamento não faz nada. Nenhum encaminhamento é usado para iniciar a conexão.

Responder2

Você não faz login no firewall, é um dispositivo de rede que restringe pacotes. É basicamente invisível neste cenário. Ele deve ser configurado para permitir que seus pacotes cheguem ao servidor bastion host (jumphost), que é a porta 22 de entrada e provavelmente as portas de saída de alto alcance.

Você faz login diretamente no servidor, portanto ele precisa ser configurado para permitir isso. Teste isso em outra máquina na mesma rede. A partir deste host bastião, você pode fazer login nas máquinas que ele está protegendo em suas sub-redes privadas.

Atualização com base em informações adicionais Você não precisa da chave do bastion/jump host no servidor de destino, você precisa da sua chave. Não é o bastião tentando acessar o servidor, é um usuário, ou seja, você.

Dê um passo para trás. Certifique-se de poder acessar o servidor de destino usando ssh de outro servidor na mesma sub-rede, usando sua chave. Em seguida, experimente no Bastion Host.

informação relacionada