Tenho uma instância do amazon ec2 linux em execução associada a um par de chaves (p1) e baixei a chave privada na minha área de trabalho em casa. Agora no trabalho, criei um par de chaves (p2) na área de trabalho e importei a chave pública para a Amazon por meio do console da AWS.
Em casa, quero adicionar a chave pública do keypair p2 a ser adicionada à authorized_keys
minha instância da AMI (que atualmente só posso acessar em casa). No entanto, eu esqueci de trazer a chave pública do p2 comigo, então é possível exportar de alguma forma essa chave pública da Amazon.
O comando ssh-keygen correto é, no entanto:
fonte
chmod 400 your_private_key.pem
se você receber "Permissões estão muito abertas"Eu já forneci uma resposta que usa volumes EBS para obter a chave pública ssh, mas aqui está outra maneira de obter isso iniciando uma instância temporária do EC2 com um script de dados do usuário que envia a chave pública à saída do console. Aqui estão os passos:
Salve o código a seguir em um arquivo nomeado
output-ssh-key.userdata
no seu computador local. NÃO EXECUTE ESTES COMANDOS LOCALMENTE!Execute uma instância LTS do Ubuntu 10.04 com o arquivo acima como um script de dados do usuário. Especifique o par de chaves para o qual deseja recuperar a chave pública ssh:
Continue solicitando a saída do console da instância até que ela mostre sua chave pública ssh. Especifique o ID da instância retornado do comando run-instance:
Dentro de 2 a 10 minutos, você obterá uma saída como esta:
A instância temporária será encerrada automaticamente em menos de uma hora, mas você pode finalizá-la você mesmo se quiser ter certeza de que não cobra mais do que os dois centavos que isso custará para ser executado.
fonte
Se você tiver a chave SSH privada, poderá gerar novamente o componente de chave pública simplesmente executando o seguinte comando ssh-keygen :
Essa é a parte mais simples ... O console e a API da AWS não oferecem suporte ao envio de 2 pares de chaves ao iniciar uma instância do EC2. Este é um exercício deixado para o administrador do sistema fazer por outros meios.
Se você tiver acesso à chave de identidade já autorizada, poderá simplesmente executar o seguinte comando ssh-copy-id :
Isso copiará a chave pública fornecida para o servidor e para o
~user/.ssh/authorized_keys
arquivo automaticamente e garantirá as permissões apropriadas no arquivo.A maneira mais elegante seria incluir as chaves de identidade adicionais em seus processos de gerenciamento de configuração. No meu caso, isso implica adicionar chaves adicionais à configuração do Puppet para o nó.
Como observação lateral, a preferência pessoal, mas utilizaria um método de gerenciamento de chaves SSH melhor do que simplesmente incluir chaves separadas para o local de trabalho e de casa. Como mencionei em uma pergunta anterior , mantenho minhas chaves em uma unidade USB que mantenho comigo em vez de em qualquer computador que utilizo.
fonte
Outra opção seria adicionar um script curto no user_data que apenas adiciona outra chave ssh ao root:
Em seguida, você pode efetuar login na máquina como root
ssh -l root -i <KEYFILE> URL
e ler a chave em optional_keys do usuário ec2_user, ubuntu ou como ele é chamado.A única coisa - você precisa tornar a máquina acessível ao público e garantir que o acesso à porta 22 seja possível a partir do exterior.
fonte