O caminho certo para configurar as chaves SSH para automatizar scp

3

Eu quero configurar as chaves SSH para automatizar scp jobs. Minha suposição atual é que "automatizar" implica em chaves SSH sem uma senha, mas estou aberto às suas sugestões.

Eu pesquisei muito antes de fazer esta pergunta. Aqui está o que eu encontrei:

  • Muitas páginas explicam como configurar chaves SSH sem uma senha
  • Muito poucas páginas explicando as implicações de segurança das chaves SSH sem uma senha

Assim, essa pergunta é uma excelente candidata ao que Jeff Atwood chama de "Tornar a Internet um lugar melhor".

Para o propósito desta pergunta, imagine esta configuração:

  • Origem 1 ( não controlada por mim): user1@host1
  • Origem 2 ( não controlada por mim): user2@host2
  • Origem X / Y / Z ( não controlada por mim): etc.
  • Destino (controlado por mim): user3@host3
  • Objetivo: configurar "jobs" (scripts, qualquer que seja) para copiar arquivos de user1@host1 e user2@host2 (etc.) para user3@host3 usando scp

Eu já conheço:

  • ssh-keygen para gerar chaves SSH
  • As chaves SSH podem ter uma senha vazia / sem senha
  • ~/.ssh/id_dsa tem a chave privada
  • ~/.ssh/id_dsa.pub tem a chave pública
  • Copie ~/.ssh/id_dsa.pub para ~/.ssh/authorized_keys e defina cuidadosamente suas permissões de arquivo
  • Compartilhe conteúdo de ~/.ssh/id_dsa.pub com outro usuário / host para usar com scp

No meu próprio teste entre diferentes hosts / usuários, eu sei que minha configuração funciona.

O que me incomoda são as implicações de segurança. E confesso que não sou administrador do Linux nem especialista em segurança.

  • Se eu der essa chave SSH pública para outra divisão para usar com scp , e se essa mesma chave for vazada / perdida / roubada para outra divisão?
  • Isso implica que qualquer pessoa com acesso a essa chave SSH pública pode usar scp em relação a host3 como user3 sem uma senha?

Considerações importantes a considerar para as suas respostas:

  • Eu não me importo com hackers externos através da Internet mais ampla. Estas são caixas Linux em uma rede corp segura.
  • Não consigo configurar IDs de usuário adicionais.

Acredito que haja uma maneira de restringir o acesso a uma chave SSH específica, mas não sei como. Talvez ~/.ssh/authorized_keys opções (que eu acabei de conhecer hoje)? É possível ter várias chaves SSH - fornecer uma chave diferente para cada fonte?

Por favor, informe o caminho certo.

    
por kevinarpe 22.01.2013 / 11:16

1 resposta

3

user3 @ host3 pode ter tantas chaves públicas ssh quanto elas gostam de conceder acesso à sua conta. Alguns podem ser protegidos por senha, outros não.

Cada chave tem uma parte pública e privada. As chaves serão geradas pelo usuário1 e pelo usuário2, a metade pública será dada ao usuário3. O User3 pode adicionar essas chaves ao seu arquivo authorized_keys. se a chave é protegida por senha ou não é determinada pela chave privada, não pela pública. Então, se user3 recebe uma chave pública do user1, eles não têm como saber se ela é protegida por senha ou não, AFAIK.

Você pode executar algumas restrições dentro do arquivo authorised_keys em máquinas individuais, conforme descrito na seção 'authorized_keys: restringindo acesso' aqui

Digamos, por exemplo, que você queria ter certeza de que user1 só poderia se conectar a partir de host1 e user2 do host2 que você poderia colocar em

from="host1" <user1 public key>
from="host2" <user2 public key>

se a chave privada for comprometida ou roubada para o usuário1 ou usuário2, eles não poderão se conectar de nenhuma outra máquina.

Não tenho certeza de como isso é bom, mas pode valer a pena pesquisar scponly que parece impedir o acesso ao shell aos usuários que você só quer ter acesso scp para.

    
por 22.01.2013 / 11:43