como SSH para EC2 sem usar explicitamente a chave pem?

21

Eu tenho o Windows como meu sistema operacional principal. Usando o VMware player, eu configuro um servidor Ubuntu 12.4 como uma máquina convidada. O servidor Ubuntu tem usuário "ubuntu".

Criei uma nova instância do EC2 + chave de configuração do pem. Na máquina Windows, quando uso a tecla putty + pem - posso ssh.

Adicionei a chave pem ao meu servidor VMware Ubuntu (/home/ubuntu/.ssh/) Além disso, defino as seguintes permissões: chmod 700 /home/ubuntu/.ssh chmod 600 /home/ubuntu/.ssh/*

Através do servidor Ubuntu - Tentei SSH para a instância EC2 sem sucesso: ssh ubuntu@EC2_IP Permission denied (publickey) . Se eu usar explicitamente a chave pem, funcionará: ssh -i /home/ubuntu/.ssh/NAME.pem ubuntu@EC2_IP - Observe que devo usar o caminho direto para a chave, caso contrário, receberei Warning: Identity file NAME.pem not accessible: No such file or directory. Permission denied (publickey).

Por favor informar. Obrigado!

user798562
fonte

Respostas:

18

Por padrão, o cliente SSH vai olhar para as teclas nomeados id_rsa, id_dsae id_ecdsaem ~/.ssh/. Se sua chave não tiver esse nome, você precisará especificá-la na linha de comando com a -iexecução ou especificá-la na configuração do cliente.

Você pode adicionar algo assim para ~/.ssh/configselecionar automaticamente esta tecla quando SSHing para EC2:

Host *.compute-1.amazonaws.com
    IdentityFile ~/.ssh/ec2_rsa
mgorven
fonte
18

Adicionar chave pem EC2 ao SSH

ssh-add ~ / .ssh / KEY_PAIR_NAME.pem

nadavkav
fonte
Pode ser necessário iniciar o agente de autenticação: eval 'ssh-agent -s' #
douglaslps
2

Como você nomeia sua chave privada? Ele deve ter o nome do arquivo id_rsa padrão (renomeie o arquivo pem para /home/ubuntu/.ssh/id_rsa)

Andrei Mikhaltsov
fonte
chamou eldad.pem (nome padrão da AWS). Renomeei para id_rsa e funcionou. existe uma maneira de mantê-lo no nome atual e ainda usá-lo?
user798562
Sim, Daniel já escreveu sobre isso em sua resposta :) #
Andrei Mikhaltsov 15/03
1

Você pode usar ssh-agente ssh-addevitar ter que especificar a chave privada explicitamente.

Você pode colocar os comandos no seu .profileou .bashrcpara que eles sejam executados toda vez que você efetuar login. Você pode encontrar um exemplo de script de inicialização na parte inferior desta postagem .

David Levesque
fonte
Eu fiz isso, mas quando eu reiniciar - eu preciso fazer isso novamente. Alguma maneira de evitar isso?
user798562
Editou minha resposta para incluir isso.
David Levesque 15/03
0

O cliente ssh procura com identify filebase na configuração definida em /etc/ssh/ssh_config. Portanto, você pode especificar o arquivo de identidade lá e lembre-se de ter vários arquivos de identidade listados no arquivo de configuração do cliente ssh. Na página de manual do ssh -

    -i identity_file
         Selects a file from which the identity (private key) for public key authentication is read.  The default is ~/.ssh/identity
         for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for protocol version 2.  Identity files may also
         be specified on a per-host basis in the configuration file.  It is possible to have multiple -i options (and multiple identiâ
         ties specified in configuration files).

Para chave RSA, por exemplo, o local padrão é ~ / .ssh / id_rsa. Como sugeriu Andrei Mikhaltsov, você pode colocar sua chave privada em / home / ubuntu / ssh / id_rsa e poderá conectar-se sem especificá-la na linha de comando. Se esse nome de arquivo já existir e contiver outra chave privada, você ainda poderá personalizar o arquivo de configuração do cliente ssh no IdentityFileparâmetro

Daniel t.
fonte