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.pub
e 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_keys
arquivo, 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 keychain
está 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-agent
sem ssh-add
ter o arquivo de chave pública. Depois de fazer isso, você poderá ver se foi bem-sucedido, pois ssh-add -l
também listará o nome do arquivo da chave privada. ssh
usará 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 AddKeysToAgent
opção to ssh
. Ele solicitará a senha apenas na primeira vez em sua sessão, se você tiver ssh-agent
disponível. No seu .bashrc
você pode adicionar apenaseval $(keychain --eval --noask)