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

1

Estou lendo este artigo sobre como configurar backups autônomos em Duplicidade.

Eu estou na parte chamada 7.2. KeyCaching SSH

Adicionei o seguinte à minha raiz .bash_profile

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

O artigo declara que as chaves devem ser colocadas em funcionamento, e que eu deveria pedir minha frase secreta para minha chave privada (/root/.ssh/id_rsa) neste momento.

Não obtenho os resultados esperados aqui, embora o keychain 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 nos Fóruns do Gentoo , mas os usuários do encadeamento parece estar intrigado com o motivo pelo qual o keychain está pedindo por id_rsa.pub e fiquei me perguntando se alguém sabia por que o chaveiro pediria a chave pública.

    
por leeand00 24.11.2011 / 08:50

2 respostas

3

Admito que não tenho conhecimento do funcionamento interno do keychain, 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 tenha.

Considere o que acontece quando você se aproxima de um servidor remoto para autenticar. O servidor remoto sabe, de seu arquivo authorized_keys , que está preparado para aceitar um cliente que possa provar que possui a chave privada correspondente a cada entrada. Mas como é que isso pede ao cliente? Não pode dar a cada chave privada, nem qualquer propriedade dela, porque ela não a possui; tudo o que pode fazer é apresentar as chaves públicas, ou impressões digitais, que aceitará.

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

É possível que os keypairs tenham algum tipo de numeração interna, mas isso seria completamente arbitrário e imprudente. 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 de o cliente selecionar a chave privada certa para usar em qualquer servidor é ter as chaves públicas correspondentes para auxiliá-lo na seleção das chaves.

    
por 24.11.2011 / 09:03
2

Acho que keychain está tentando ser mais seguro do que o programa para o qual é um ajudante ( ssh ).

A partir da minha versão atual do OpenSSH, é possível adicionar uma chave privada a ssh-agent com ssh-add sem ter o arquivo de chave pública. Depois de fazer isso, você poderá ver se foi bem-sucedida, pois ssh-add -l também listará o nome do arquivo de chave privada. ssh usará a chave armazenada em cache para se conectar, mesmo que mais de uma identidade esteja disponível. Tentá-los, por sua vez, é 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 opção AddKeysToAgent para ssh . Ele pedirá a frase secreta apenas na primeira vez em sua sessão, se você tiver ssh-agent disponível. No seu .bashrc você pode adicionar apenas eval $(keychain --eval --noask)

    
por 08.04.2016 / 16:54