EC2: várias chaves ssh para uma instância?

12

É possível criar mais de uma chave privada para SSH em uma instância do EC2? Qual é a melhor prática geral para isso? Temos vários usuários que precisam fazer o SSH nos servidores e distribuir uma chave simplesmente não funciona bem. Isso não nos permite remover os usuários do SSH no servidor, a menos que alteremos a chave e redistribamos.

imaginativo
fonte
Quando você está gerenciando chaves SSH para uma equipe, provavelmente é melhor procurar uma ferramenta especializada como o Userify ou o SSH UKM (Isenção de responsabilidade: eu trabalho para o Userify).
Jamieson Becker

Respostas:

5

Absolutamente; basta colocar todas as chaves públicas relevantes na imagem e você deve estar certo. Eu prefiro usar um sistema de gerenciamento de configuração para gerenciar chaves SSH; dessa forma, é bastante trivial revogar o acesso de um usuário, mesmo em sistemas em execução. Também há muito mais ... digamos "imaginativas" ... maneiras de lidar com isso, como armazenar todas as suas chaves SSH no LDAP, que centralizam as chaves SSH como qualquer outra credencial.

mulher
fonte
2
Quando você começa a querer armazenar chaves SSH no LDAP, é hora de aprender sobre o Kerberos.
84104
1
Eu implantei o Kerberos; pessoalmente, acho que é uma solução em busca de um problema, e uma solução bastante complicada e irritante.
Womble
2
@ Ash: As perguntas vão em perguntas, não comentários.
womble
1
Eu ia ignorar o comentário acima - mas, para quem é novo no site, devo deixar claro que, se você tiver um comentário relacionado à implementação da resposta, esclarecimentos ou mal-entendidos, isso deve ficar claro nos comentários, para que o OP possa editar a resposta, a fim de esclarecer qualquer confusão que possa ocorrer.
Mazatec
2
Não, você deve fazer perguntas esclarecedoras nos comentários se a resposta não abordar a pergunta originalmente feita. Se você quiser fazer uma nova pergunta com base no conteúdo de uma resposta, use o grande botão "Fazer pergunta" no canto superior direito da página para fazer uma nova pergunta. Este é um site de perguntas e respostas, não um fórum de discussão.
womble
6

Você também pode usar mecanismos ssh padrão. A melhor abordagem seria se o usuário executasse em sua máquina ssh-keygenpara gerar seu par de chaves. Em seguida, eles enviam você ~/.ssh/id_rsa.pub(ou id_dsa.pub, dependendo do algoritmo escolhido) e você adiciona seu conteúdo ao .ssh/authorized_keyshost de destino no diretório inicial da conta de usuário que ele deve acessar. Pode haver mais de uma chave no arquivo. Um por linha. E isso é tudo! A mesma chave pública (id_rsa.pub) pode ser usada em qualquer número de hosts - ela sempre identificará o usuário.

Você também pode fazer o contrário - você executa o ssh-keygen e publica ~ / .ssh / id_rsa (ou id_dsa) no usuário. E o usuário salva o arquivo em ~ / .ssh / id_rsa. Apenas lembre-se de alterar as permissões para 600 (-rw -------) desse arquivo, caso contrário, o ssh não o aceitará. Isso é obviamente menos seguro, pois a chave privada está sendo distribuída por email provavelmente.

Também pode ser feito no PuTTY com o PuTTYgen.

oker
fonte
1

Uma maneira mais simples é como mostrado abaixo.

Para usuários Linux / Mac:

  1. Para criar chaves públicas e privadas, use o seguinte comando: $ ssh-keygen -t rsa -b 4096

  2. Faça o upload da chave pública para uma pasta no seu bucket S3. Por exemplo: S3> MyBucket> Keypair

  3. Salve e proteja sua chave privada.

Para usuários do Windows:

  1. Use puttygen para gerar as chaves.
  2. Siga o DigitalOcean para criar chaves SSH.
  3. Carregue a chave pública em S3> MyBucket> Keypair
  4. Salve e proteja sua chave privada.

As etapas a seguir são importantes durante o lançamento de qualquer AMI do Linux.

  1. Verifique se a função IAM possui uma função criada com a política AmazonS3FullAccess. Isso permite que a instância assuma uma função para acessar os buckets S3. Isso é necessário para ler as chaves públicas do S3 e copiá-las para o perfil do usuário

  2. Adicione o seguinte código na seção de dados do usuário em Detalhes da instância de configuração> Detalhes avançados (como texto):

    #!/bin/bash
    usermod user 1
    usermod -aG wheel user1
    mkdir /home/user1/.ssh/
    aws s3 cp s3://MyBucket    /Keypair/user1-pub.pub /home/user1/.ssh/authorized_keys
    
    useradd user2
    usermod -aG wheel user2
    mkdir /home/user2/.ssh/
    aws s3 cp s3://MyBucket   /Keypair/user2-pub.pub /home/user2/.ssh/authorized_keys
    
    sudo -i 
    echo “user1 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    echo “user2 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    
    yum update -y
    

Essa configuração cria o Usuário1 e o Usuário2 e os adiciona aos usuários do sudo . O comando aws s3 cp copia as chaves públicas dos usuários da pasta S3 para as deles .ssh/authorized_keys path. A última seção é executar comandos como administrador sem precisar de senhas.

Existem muitas melhorias de segurança que podem ser recomendadas aqui. Embora não seja explicitamente usado neste exemplo, limitar o acesso do bucket do S3 a um bucket específico e conhecer as implicações de segurança da desativação do uso de senhas no sudo, são algumas coisas que podem ser destacadas. Use-os com sabedoria, com base em suas necessidades particulares.

Vijay Shreenivos
fonte