Como a maioria dos administradores de sistemas, eu uso o openssh o tempo todo. Eu tenho cerca de uma dúzia de chaves ssh, gosto de ter uma chave ssh diferente para cada host. No entanto, isso causa um problema quando estou me conectando a um host pela primeira vez, e tudo o que tenho é uma senha. Eu quero apenas conectar ao host usando uma senha, sem chave ssh neste caso. No entanto, o cliente ssh oferecerá todas as chaves públicas no meu ~/.ssh/
(eu sei disso olhando a saída de ssh -v
). Como tenho tantas, ficarei desconectado por muitas falhas de autenticação.
Existe alguma maneira de dizer ao meu cliente ssh para não oferecer todas as chaves ssh?
ssh
public-key
private-key
Rory
fonte
fonte
Respostas:
Esse é o comportamento esperado de acordo com a página do manual
ssh_config
:Basicamente, especificar
IdentityFile
s apenas adiciona chaves a uma lista atual que o agente SSH já apresentou ao cliente.Tente substituir esse comportamento por este na parte inferior do seu
.ssh/config
arquivo:Você também pode substituir essa configuração no nível do host, por exemplo:
fonte
ssh -o "IdentitiesOnly true" -v -A user@host
que eu uso para fazer login em uma máquina que não possui nenhuma das minhas chaves, mas quero oferecer o encaminhamento de agente para continuar. (-v
para depuração detalhada).yes
(e nãotrue
)?IdentitiesOnly
nem sempre ajuda, talvez você precise excluir um host especificamente; consulte superuser.com/questions/859661/…Embora outros tenham sugerido isso com soluções baseadas em configuração, provavelmente vale a pena ressaltar que você pode fazer isso facilmente apenas uma vez na linha de comando com:
fonte
Seguindo a solução de James Sneeringer, você pode querer definir um ssh_config ao longo das linhas de:
Se você se conectar com uma chave específica a muitas máquinas que não estão em um domínio comum, considere fornecer a elas todos os CNAMEs em seu próprio DNS. Eu faço isso com todos os sistemas do cliente.
fonte
Semelhante à solução do user23413, você pode desativar completamente a autenticação de chave pública para um host específico (ou padrão curinga):
fonte
Se você apontar para um arquivo de chave específico com ssh -i / path / to / key, ele somente o usará, mesmo que outros estejam carregados no agente, e a senha não será solicitada. Você também pode editar seu ~ / .ssh / config e adicionar algo assim ...
Host foo.example.com
IdentityFile .ssh / id_rsa_foo.example.com
você também pode fazer ...
Host * .example.org
IdentityFile .ssh / id_rsa_example.org
fonte
IdentitiesOnly
somente com essa vontade.