Comecei a usar chaves SSH em vez de senhas recentemente (graças ao GitHub, é claro), então lembre-se de que sou bastante novo em todo esse conceito. Atualmente, minhas chaves simplesmente estão em ~ / .ssh, mas não tenho certeza se essa é uma boa prática. Por exemplo, se eu tiver várias máquinas, precisarei duplicar minhas chaves privadas, o que acho indesejável. Ou, se o meu disco rígido ficar vazio, perderei essas chaves, o que (eu acho) também é indesejável.
Então, quais são as práticas recomendadas para armazenar chaves SSH de forma segura, conveniente e confiável?
Parece que usar um cartão inteligente é uma opção (consulte Cartões inteligentes para armazenar as chaves gpg / ssh (Linux) - o que eu preciso? ). Essa é a melhor?
Atualização: O motivo da pergunta é que muitos serviços (como GitHub, AWS EC2) fornecem guias sobre como configurar chaves SSH para usar o serviço, mas pouco ou nenhum plano de fundo (como, 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 essas informações são de fato sem importância ou se você as conhece "por padrão".
Para resumir as respostas até esse ponto (mas, por favor, leia-as e se você tiver algo a acrescentar - por favor, faça): parece que, neste caso, é bom se você deixar suas chaves privadas em ~ / .ssh, desde que você mantenha-os de outras pessoas; mas verifique se você tem outra maneira de acessar o serviço para carregar ou gerar uma nova chave se você perder uma (normalmente é o caso).
[1] O GitHub é usado para fornecer ajuda sobre como gerenciar várias chaves .
Respostas:
Não, na verdade você não. Se você tiver várias máquinas, basta criar uma chave privada separada em cada uma. Para cada chave privada, basta carregar a chave pública correspondente no GitHub usando o mesmo processo.
Na verdade não; se você perder sua chave privada, basta gerar uma nova e fazer upload da chave pública correspondente.
Pelo que vale, você está certo que duplicar uma chave privada é altamente indesejável. Idealmente, uma chave privada deve ser gerada em um arquivo (
~/.ssh/id_rsa
por exemplo) e nunca deve sair desse arquivo - ou seja, nunca deve ser copiada, movida e, principalmente, não transferida pela rede. (por exemplo, eu os excluo dos backups) Devido à natureza dos protocolos de autenticação assimétricos, você só precisa se preocupar em manter sua chave privada fora do alcance de outras pessoas. Se você exagera um pouco e perde a noção disso, geralmente não é grande coisa. (Isso não deve ser confundido com chaves privadas de criptografia assimétrica , por exemplo, chaves GPG, nas quais você provavelmente deseja se apegar.)fonte
Eu acrescentaria que ~ / .ssh / é legível pelo seu navegador se você estiver usando a mesma conta de usuário para executar os dois.
Tente! Aponte seu navegador para sua chave privada em seu diretório pessoal. É divertido.
Portanto, eu recomendaria armazenar as chaves ssh no diretório inicial de outra conta de usuário.
uma palavra na senha protegendo chaves
look_at_keys.html
fonte
Existe uma ferramenta muito legal chamada KeePass2 ( http://keepass.info/ ) com a extensão ( http://lechnology.com/software/keeagent/ )
Você pode armazenar lá senhas, chaves SSH e muito mais (na página oficial do KeePass são extensões muito mais úteis)
Se você quiser fazer login automaticamente com suas chaves SSH, basta instalar o PuTTY, Pageant e KeePass com o KeeAgent. Se você estiver configurando corretamente, não precisará configurar as Chaves no PuTTY, Pageant ou FileZilla.
Eu mesmo uso e estou muito feliz com isso. Eu tenho mais de 30 VPS e servidor raiz com uma certa quantidade de chaves SSH diferentes e a única coisa que tenho a fazer é abrir o KeePass (não é meu principal cofre de senha) e, em seguida, só preciso digitar no console minha senha.
fonte
Eu recomendaria armazenar chaves privadas:
Eu diria que o melhor lugar seria:
Melhor ainda, basta imprimi-lo e colocá-lo em um cofre à prova de fogo.
fonte
Eu tenho um arquivo tar que possui a minha configuração de diretório de usuário (.bashrc, .ssh / e outros arquivos de configuração) que guardo em um local seguro. Quando recebo uma nova conta shell em qualquer lugar, descompacte o arquivo tar nela.
Você só deve colocar suas chaves privadas nos servidores em que confia, caso contrário, deve criar uma nova chave privada no servidor apenas para esse servidor e permitir o acesso às coisas às quais você deseja ter acesso.
Pessoalmente, eu me sinto confortável apenas copiando meu arquivo .ssh / stuff em todos os lugares (também significa que, por meio da chave ssh comum, obtém acesso ssh instantaneamente, já que ele já está no arquivo allowed_keys).
fonte
Você pode armazenar suas chaves ssh em um diretório separado dentro de uma partição criptografada. Então você pode usar ssh apontando para esse diretório com
-i
:Descrição completa (
man ssh
):Minha abordagem à segurança é que eu divido as informações em particular e geral. Não quero criptografar toda a minha partição pessoal, é por isso que copio arquivos secretos (como os que estão dentro
~/.ssh
) para uma partição criptografada.Acho que isso fornece uma segurança bastante eficiente, porque o malware não encontra nada no ~ / .ssh e provavelmente não varrerá todo o seu sistema ou perfis de shell para encontrar esse local.
define o caminho para o arquivo de configuração.
PS: Eu criaria um alias
alias ssh='ssh -i ... -F ...'
e o colocaria no seu perfil.PPS Ainda não verifiquei isso e não sei como outros programas (como o git) funcionarão com essas configurações de ssh.
fonte