Isenção de responsabilidade : originalmente fiz esta pergunta no StackOverflow e ela foi legitimamente marcada como fora do tópico e acho que se encaixa melhor aqui. Nesse ínterim, encontrei o problema (veja a solução intermediária abaixo).
Problema original
Estou em um cliente Windows e quero me conectar via SSH a um cliente Ubuntu.
minha configuração (que está funcionando ) fica assim:
Host myhost
ForwardAgent Yes
Host myuser@myhost
HostName myhost
User myuser
Consigo me conectar, o encaminhamento funciona conforme o esperado, de forma que ssh-add -l
no controle remoto mostre a identidade do meu cliente conectado.
Agora, o que não entendo é por que a seguinte configuração não funciona :
Host myuser@myhost
ForwardAgent Yes
HostName myhost
User myuser
Nesse caso consigo pelo menos me conectar via SSH, mas o encaminhamento não funciona, então rodar ssh-add -l
novamente retorna:
Não foi possível abrir uma conexão com seu agente de autenticação.
Para mim, a segunda configuração parece basicamente a mesma, mas em uma etapa e não em duas.
O que estou perdendo aqui?
O que eu tentei
Uma sugestão que recebi foi substituir a @
placa por outra. Infelizmente não estava funcionando.
Então fiz algumas pequenas alterações como letras minúsculas, yes
por exemplo. Nada mudou.
solução intermediária
Depois de realmente tentar no estilo tentativa e erro . Descobri que o primeiro Host
estilo de nomenclatura estava OK:
Host myhost
HostName myhost
User myuser
ForwardAgent yes
E acontece que posso mudar Host
como estava , mas não devo incluir o nome de User
? Isso acaba sendo um padrão.
Questões
- Alguém entende por que isso
User
não é permitido? - qual é a melhor prática quando desejo incluir outra especificação, mas com outro usuário? Minha primeira configuração seguiu esse intuito, veja:
Host user1@myhost
HostName myhost
User user1
ForwardAgent yes
Host user2@myhost
HostName myhost
User user2
ForwardAgent yes
O que não funcionaria.
Também não está funcionando:
Host myuser-myhost
HostName myhost
User myuser
ForwardAgent yes
ou
Host myhost-myuser
HostName myhost
User myuser
ForwardAgent yes
ou
Host myhostmyuser
HostName myhost
User myuser
ForwardAgent yes
Host myusermyhost
HostName myhost
User myuser
ForwardAgent yes
nem mesmo
Host mymyuserhost
HostName myhost
User myuser
ForwardAgent yes
realmente confuso. Como faço para distinguir duas configurações com dois usuários diferentes? Apenas por ter dois arquivos diferentes?
Host
deve corresponder a um nome de host fornecido como argumento de linha de comando parassh
, comossh host
. Pode ser um padrão com curingas como*
ou?
. Não inclui um nome de usuário. Quando você se conecta com um comando comossh user1@myhost
esse, esse argumento é dividido em um nome de usuáriouser1
e um nome de hostmyhost
, e o nome do host corresponde àsHost
diretivas. Como o símbolo@
não é um curinga, vocêHost user1@myhost
nunca corresponderámyhost
.Se quiser que a configuração se aplique apenas a um usuário específico, você precisará usar a
Match
diretiva em vez deHost
, como a seguir:Veja a documentação .