Pergunta chave pública / privada SSH simples

1

Estou tentando aprender isso em vez de apenas seguir os guias para que eu possa recomendar ações adequadas quando as pessoas perguntarem (e o fizerem). Aqui está o que eu desci.

Primeiro, gere as duas chaves com um comando como este:

ssh-keygen -b 2048 -t rsa -C comment -f ~/.ssh/id_rsa

Então você empurra a parte pública da chave para o arquivo authorized_keys2

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2

(e depois chmod para 600 ou similar)

E você faz o download da chave privada para o seu computador (id_rsa) e envia isso para o Putty para ser lido e autenticado.

Estas são as etapas corretas para configurar essa autenticação de chave pública / privada para o login sem senha no SSH?

    
por James l. 23.12.2010 / 03:49

3 respostas

4

Embora os passos descritos funcionem, existe um problema. Você está gerando o par de chaves no computador de destino (remoto) e, em seguida, baixando o arquivo de chave particular para o sistema local. Existem aqui implicações de segurança que você não deve ignorar:

  • Se o controle remoto já estiver comprometido, alguém pode ter acabado de pegar sua frase secreta.
  • Se o sistema remoto for comprometido no futuro, o invasor terá acesso ao seu arquivo de chave privada (e ao luxo de usar um ataque de força bruta offline para tentar descriptografá-lo).

Como você está usando pares de chaves ssh para (tentar) resolver alguns dos problemas inerentes à autenticação de senha, normalmente você quer fazer as coisas dessa maneira:

  • Gere o par de chaves no seu sistema local. Idealmente, a chave privada (a) nunca será armazenada em um sistema de arquivos compartilhado (por exemplo, diretório inicial do NFS) e (b) nunca será armazenada em um computador que permita logins remotos.

  • Publique a chave pública longe. Eu mantenho minhas chaves públicas em um site para que eu possa pegá-las sempre que eu precisar delas. Coloque a chave pública nos arquivos authorized_keys apropriados nos sistemas aos quais você estará se conectando.

Se você for especialmente paranóico, poderá armazenar sua chave privada em um pen drive e usar a unidade apenas para carregar a chave em um ssh-agent em execução. Neste ponto, você não precisa mais do arquivo de chave real.

    
por 23.12.2010 / 05:01
2

Pode ser melhor gerar a chave no (s) sistema (s) do cliente. Você pode acabar com um arquivo authorized_keys maior, mas é mais fácil desabilitar um sistema comprometido. Se você migrar a chave privada do servidor, precisará gerar novamente e migrar a chave para todos os sistemas clientes. Cada cliente deve ter sua própria chave.

Putty usa puttygen para gerar a chave. puttygen também fornecerá a chave pública no formato correto para colar no sistema do cliente. É melhor proteger a chave com uma frase secreta se ela estiver sendo usada para acesso de login. Pageant ou ssh-agent pode ser usado para manter a chave desprotegida na memória, para que a frase secreta não precise ser reinserida em cada conexão.

Depois de adicionar uma chave e definir a proteção, você poderá adicionar outras chaves com a necessidade de redefinir as permissões. Eu normalmente carrego a chave pública do sistema com um nome como example.pub , em que exemplo é o nome do sistema ao qual a chave pertence.

Muitas implementações retornaram ao uso de authorized_keys como arquivo-chave. Este arquivo pode ser usado para restringir o sistema de onde a chave será aceita, forçar um comando a ser executado, limitar o acesso e outras coisas. Veja a página man para mais detalhes.

Em alguns casos, pode ser útil ter várias chaves no sistema do cliente. Isso pode ser feito para suportar processos em lote que são executados com chaves que não possuem uma senha.

    
por 23.12.2010 / 05:00
1

Isso parece bom. Muitas pessoas fariam isso na direção oposta (gere a chave localmente, depois empurre seu .pub para o servidor), mas qualquer um pode funcionar.

    
por 23.12.2010 / 04:05