Conecte-se (SSH) ao mesmo servidor, através de dois gateways diferentes, com usuários de servidor diferentes

Conecte-se (SSH) ao mesmo servidor, através de dois gateways diferentes, com usuários de servidor diferentes

O que eu gostaria de conseguir é poder conectar-me a alguns target.serverda minha máquina local, sem precisar digitar nenhuma senha, com os seguintes comandos:

ssh [email protected]
ssh [email protected]

Cada usuário acima aceita apenas uma conexão de um endereço IP específico, correspondente respectivamente a gateway1.examplee gateway2.example. Adicionei todas as chaves SSH necessárias à direita authorized_keys, para poder fazer isso sem digitar senhas:

Agora acho que falta colocar as coisas certas no meu local ~/.ssh/config. Quando eu adiciono:

Host target.server
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

Então funciona. Mas não sei como fazer os dois e funcionar. Tentei:ssh [email protected]user1user2

Host target.server
    User user1
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
Host target.server
    User user2
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

ou

Host target.server
    User user1
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
    User user2
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

mas ainda não funcionou para user2: tudo passou gateway1e não gateway2.

Muito obrigado antecipadamente por sua ajuda!

Atualizar:Consegui fazer os seguintes comandos funcionarem:

ssh user1
ssh user2

(sem @target.server), usando a seguinte configuração:

Host user1
    HostName target.server
    User user1
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
Host user2
    HostName target.server
    User user2
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

É isso que irei usar, mas ainda estou curioso para ver uma solução para os dois comandos do início desta questão.

Responder1

Como você descobriu, os aliases são uma boa solução. Se você não quiser usá-los, a Matchdiretiva pode ser outra opção válida.

Host target.server
    Match User user1
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
    Match User user2
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

Na ssh_configpágina de manual:

Corresponder Restringe as seguintes declarações (até o próximoHospedarouCorresponderpalavra-chave) a ser usada somente quando as condições após aCorresponderpalavra-chave estão satisfeitos.

informação relacionada