Como armazenar chaves SSH?

53

Eu comecei a usar chaves SSH em vez de senhas recentemente (graças ao GitHub, é claro), então tenha em mente que sou muito novo em todo esse conceito. Atualmente minhas chaves simplesmente estão em ~ / .ssh, mas não tenho certeza se isso é uma boa prática. Por exemplo. se eu tiver várias máquinas, precisaria duplicar minhas chaves particulares, o que acho indesejável. Ou, se o meu disco rígido cair, então vou perder essas teclas, o que (eu acho) é indesejável também.

Então, quais são as práticas recomendadas para armazenar chaves SSH de forma segura, conveniente e confiável?

Parece que o uso de um cartão inteligente é uma opção (consulte Smartcards para armazenar chaves gpg / ssh (Linux) - do que eu preciso? ), esta é a melhor?

Atualização: O motivo da pergunta é que muitos serviços (como o GitHub, AWS EC2) fornecem guias sobre como configurar chaves SSH para usar o serviço, mas pouco ou nenhum plano de fundo (por exemplo, o que fazer se você já tiver uma chave gerada por ssh-keygen [1], quais são as medidas de segurança recomendadas). E não está claro se essa informação é de fato sem importância ou se é esperado que você a saiba "por padrão".

Para resumir as respostas até este ponto (mas, por favor, leia-as, e se você tiver algo a acrescentar - por favor): neste caso, tudo bem se você deixar suas chaves privadas em ~ / .ssh, contanto que você os mantenha de outras pessoas; mas certifique-se de que você tenha outra maneira de acessar o serviço para fazer o upload ou gerar uma nova chave se perder uma (o que normalmente é o caso).

[1] O GitHub costumava fornecer ajuda sobre como para gerenciar várias chaves .

    
por Tony 16.08.2011 / 21:36

5 respostas

37

E.g. if I have multiple machines, I'd need to duplicate private keys, which I think is undesirable.

Não, na verdade você não. Se você tiver várias máquinas, basta criar uma chave privada separada em cada uma delas. Para cada chave privada, basta fazer o upload da chave pública correspondente para o GitHub usando o mesmo processo.

Also, if my HDD go kaput, I'll lose my private key, which (I guess) is undesirable as well.

Não realmente; Se você perder sua chave privada, basta gerar uma nova e fazer o upload da chave pública correspondente.

Por que vale a pena, você está certo de que a duplicação de uma chave privada é altamente indesejável. Idealmente, uma chave privada deve ser gerada em um arquivo ( ~/.ssh/id_rsa por exemplo) e deve nunca deixar esse arquivo - ou seja, nunca deve ser copiado, movido e especialmente não transferido por uma rede . (por exemplo, excluo-os de backups) Devido à natureza dos protocolos de autenticação assimétrica, você só precisa se preocupar em manter sua chave privada fora do alcance de outras pessoas. Se você for um pouco exagerado e perder a noção de si mesmo, geralmente não é grande coisa. (Isso não deve ser confundido com chaves privadas de criptografia assimétricas, por exemplo, chaves GPG, as quais você provavelmente deseja manter.)

    
por 16.08.2011 / 21:44
8

Gostaria de acrescentar que ~ / .ssh / pode ser lido pelo seu navegador se você estiver usando a mesma conta de usuário para executar ambos.

Experimente! Aponte seu navegador para sua chave privada no seu diretório pessoal. É divertido.

Então, eu recomendaria armazenar ssh-keys no diretório pessoal de outra conta de usuário.

uma palavra sobre senha protegendo as chaves

  • Atualmente, quebrar senhas não aleatórias é super rápido. Confira o cat hash
    • (Embora as senhas de caracteres aleatórias e longas de 12 caracteres ainda demorem razoavelmente para a força bruta)
    • Assim, as chaves ssh criptografadas AES são incontáveis para o futuro previsível, desde que você use senhas longas e boas. Consulte recomendações do github
  • Então, algum site pode adivinhar sua chave sem JavaScript. E então força bruta a chave off-line.
  • E os navegadores também podem ver sua área de transferência com o JS. Portanto, copiar e colar senhas muito longas também coloca você em risco devido aos ataques de javascript mais sofisticados.

look_at_keys.html

 9 <HTML>
10 <HEAD>
11 <TITLE>look at keys</TITLE>
12 </HEAD>
13 <FRAMESET cols="20%, 80%">
14   <FRAMESET rows="100, 200">
15       <FRAME src="/Users/yourname/.ssh/stuff.pem">
16       <FRAME src="blah.html">
17   </FRAMESET>
18   <FRAME src="contents_of_frame3.html">
19 </FRAMESET>
20 </HTML>
    
por 23.08.2012 / 19:02
6

Existe uma ferramenta muito legal chamada KeePass2 ( link ) com a extensão ( link )

Você pode armazenar senhas, chaves SSH e muito mais (na página oficial do KeePass existem extensões muito mais úteis)
Se você quiser logar automaticamente com suas chaves SSH, você só precisa instalar o PuTTY, Pageant e KeePass com o KeeAgent. Se você está configurando corretamente você não precisa configurar as chaves no PuTTY, Pageant ou FileZilla.

Eu mesmo uso e estou muito feliz com isso. Eu tenho mais de 30 VPS e Root Server com uma certa quantidade de diferentes chaves SSH ea única coisa que eu tenho que fazer é abrir KeePass (não é meu Password Safe primário) e então eu só preciso digitar o console minha senha.

    
por 14.09.2016 / 10:41
3

Eu recomendaria o armazenamento de chaves privadas:

  • off-line (não na nuvem)
  • em mais de um lugar
  • independentemente de qualquer coisa relacionada, por exemplo uma chave para seus dados criptografados, armazene-os em um local separado dos dados

Eu diria que o melhor lugar seria:

  • um disco rígido externo
  • uma chave de flash
  • um computador não conectado à internet

Melhor ainda, imprima-o e coloque-o em um cofre à prova de fogo.

    
por 12.11.2014 / 15:10
1

Eu tenho um arquivo tar que possui a configuração do meu diretório de usuário (.bashrc, .ssh / e outros arquivos de configuração) que guardo em um local seguro. Quando obtenho uma nova conta de shell em qualquer lugar, descompacte o arquivo tar nela.

Você só deve colocar suas chaves privadas em servidores confiáveis, caso contrário você deve criar uma nova chave privada no servidor apenas para esse servidor e permitir o acesso às coisas que você deseja que ele tenha acesso.

Pessoalmente, fico à vontade apenas copiando meu .ssh / stuff por toda parte (isso também significa que a chave ssh comum obtém o acesso ssh instantaneamente, já que ele já está no arquivo authorized_keys).

    
por 16.08.2011 / 21:43