O que eu gostaria de conseguir é poder conectar-me a alguns target.server
da 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.example
e gateway2.example
. Adicionei todas as chaves SSH necessárias à direita authorized_keys
, para poder fazer isso sem digitar senhas:
ssh [email protected]
da máquina local, depois de .ssh [email protected]
gateway1
ssh [email protected]
da máquina local, depois de .ssh [email protected]
gateway2
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]
user1
user2
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 gateway1
e 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 Match
diretiva 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_config
pá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.