Antes de descrever qualquer benefício para qualquer um dos métodos, ressalto que o padrão da indústria para esse tipo de coisa é gerar o par de chaves no sistema do cliente, não no servidor, principalmente porque oferece uma experiência de usuário muito melhor. .
Agora, pelas vantagens e desvantagens, elas se complementam bastante, então listarei as vantagens de cada método.
Gerando as chaves no cliente:
- Integração direta trivial com o ssh. Se você gerar a chave com o próprio ssh e for sua única chave, ela automaticamente será colocada no lugar certo para ser usada por padrão, simplificando as coisas para usuários não técnicos.
- Em teoria, a qualidade da entropia usada para gerar a chave provavelmente será melhor no sistema cliente do que na instância do EC2 (as VMs possuem uma entropia notoriamente baixa).
- O usuário sempre sabe exatamente onde está a chave privada, o que é importante para verificar a segurança da chave.
- Se o usuário já tiver uma chave SSH (e, como regra geral, as pessoas que usam SSH regularmente fazem isso), elas podem simplesmente enviar a chave pública para isso em vez de lidar com o gerenciamento de vários pares de chaves (que é um dor).
Gerando as chaves na instância do EC2:
- É fácil copiar a chave para o local desejado na instância do EC2.
- Carga inferior no sistema do cliente.
- É mais fácil impor requisitos mínimos de segurança.
Observe que eu explicitamente não listei nada acima sobre as implicações de segurança de copiar uma chave privada em vez de pública. Isso ocorre porque as implicações de segurança dependem totalmente da segurança do mecanismo usado para copiá-las.