Por que o Keychain reclama que id_rsa.pub está faltando?

Por que o Keychain reclama que id_rsa.pub está faltando?

eu estou lendoEste artigosobre como configurar backups autônomos no Duplicity.

Estou na parte chamada 7.2. Cache de chaves SSH

Eu adicionei o seguinte à minha raiz.bash_profile

keychain --clear id_rsa 
. /root/.keychain/www-sh

O artigoafirma que o chaveiro deve ser inicializado e que devo ser solicitado a fornecer minha SENHA para minha chave privada (/root/.ssh/id_rsa) neste momento.

Não obtenho os resultados esperados aqui, embora o chaveiro realmente comece, ele lança alguns avisos neste momento:

KeyChain 2.6.8; http://www.gentoo.org/proj/en/keychain/
Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL

 * Found existing ssh-agent (2014)
 * ssh-agent: All identities removed.
 * Warning: /root/.ssh/id_rsa.pub missing; can't tell if /root/.ssh/id_rsa is loaded

root@www:~# 

Encontrei alguma menção a isso noFóruns Gentoomas os usuários do tópico parecem confusos sobre por que o chaveiro está pedindo id_rsa.pube eu queria saber se alguém sabia por que o chaveiro pediria a chave pública.

Responder1

Admito livremente que não tenho conhecimento do funcionamento interno do chaveiro, mas é completamente razoável que um agente ssh local fique chateado por não ter uma chave pública que corresponda a uma chave privada que ele possui.

Considere o que acontece quando você se aproxima de um servidor remoto para autenticar. O servidor remoto sabe, a partir de seu authorized_keysarquivo, que está preparado para aceitar um cliente que possa provar que possui a chave privada correspondente para cada entrada nele contida. Mas como pedir isso ao cliente? Ele não pode fornecer cada chave privada, nem qualquer propriedade dela, porque não a possui; tudo o que pode fazer é apresentar a(s) chave(s) pública(s), ou impressões digitais das mesmas, que aceitará.

Se o cliente tiver alguma dessas chaves públicas, ele poderá selecionar imediatamente a chave privada correspondente e dar uma resposta que o servidor aceitará como correta. Se não tiver essas chaves públicas, o que fazer? Experimentar todas as chaves privadas de seu repertório? Dificilmente poderia ser imaginada uma receita melhor para a divulgação de informações inseguras; um black-hat só precisaria configurar um ataque man-in-the-middle em uma única conexão nova para coletar respostas legítimas de cada chave do seu chaveiro.

É possível que os pares de chaves tenham algum tipo de numeração interna, mas isso seria completamente arbitrário e imprudente de se confiar. Não há nenhuma propriedade interna garantida que vincule uma chave privada e pública, porque não há nada compartilhado pelas chaves em um par de chaves, exceto que uma é (espero) a única entidade que pode desfazer o que a outra faz.

Não, a melhor maneira para o cliente selecionar a chave privada correta para usar em qualquer servidor é ter as chaves públicas correspondentes para auxiliá-lo na seleção da chave.

Responder2

Acho que keychainestá tentando ser mais seguro do que o programa do qual é auxiliar ( ssh).

A partir da minha versão atual do OpenSSH, é possível adicionar uma chave privada ssh-agentsem ssh-addter o arquivo de chave pública. Depois de fazer isso, você poderá ver se foi bem-sucedido, pois ssh-add -ltambém listará o nome do arquivo da chave privada. sshusará a chave armazenada em cache para se conectar, mesmo se mais de uma identidade estiver disponível. Experimentá-los é explicitamente mencionado na documentação.

$ ssh -V
OpenSSH_7.2p2, OpenSSL 1.0.2g  1 Mar 2016
$ man ssh_config
...
     IdentityFile
      ...
             It is possible to have multiple identity files speci‐
             fied in configuration files; all these identities
             will be tried in sequence.  Multiple IdentityFile
             directives will add to the list of identities tried
             (this behaviour differs from that of other configura‐
             tion directives).
      ...

Acho que é melhor usar a AddKeysToAgentopção to ssh. Ele solicitará a senha apenas na primeira vez em sua sessão, se você tiver ssh-agentdisponível. No seu .bashrcvocê pode adicionar apenaseval $(keychain --eval --noask)

informação relacionada