jak SSH do EC2 bez jawnego używania klucza pem?

21

Mam główny system operacyjny Windows. Korzystając z odtwarzacza VMware, skonfigurowałem serwer Ubuntu 12.4 jako maszynę gościa. Serwer Ubuntu ma użytkownika „ubuntu”.

Utworzyłem nową instancję EC2 + klucz instalacyjny pem. Z komputera z systemem Windows, gdy używam klucza putty + pem - mogę ssh.

Dodałem klucz pem do mojego serwera VMware Ubuntu (/home/ubuntu/.ssh/) Ponadto ustawiłem następujące uprawnienia: chmod 700 /home/ubuntu/.ssh chmod 600 /home/ubuntu/.ssh/*

Za pośrednictwem serwera Ubuntu - Próbowałem SSH do instancji EC2 bez powodzenia: ssh ubuntu@EC2_IP Permission denied (publickey) . Jeśli wyraźnie użyję klucza pem, działa: ssh -i /home/ubuntu/.ssh/NAME.pem ubuntu@EC2_IP - Pamiętaj, że muszę użyć bezpośredniej ścieżki do klucza, w przeciwnym razie dostanę Warning: Identity file NAME.pem not accessible: No such file or directory. Permission denied (publickey).

Proszę doradź. Dzięki!

użytkownik798562
źródło

Odpowiedzi:

18

Domyślnie klient SSH będzie wyglądać na klucze o nazwach id_rsa, id_dsaiid_ecdsa w ~/.ssh/. Jeśli Twój klucz nie jest tak nazwany, musisz podać go w wierszu polecenia za pomocą poprzedniej czynności -ilub określić w konfiguracji klienta.

Możesz dodać coś takiego, ~/.ssh/configaby automatycznie wybrać ten klucz, gdy SSHing do EC2:

Host *.compute-1.amazonaws.com
    IdentityFile ~/.ssh/ec2_rsa
mgorven
źródło
18

Dodaj klucz pem EC2 do SSH

ssh-add ~ / .ssh / KEY_PAIR_NAME.pem

nadavkav
źródło
Może być konieczne uruchomienie agenta uwierzytelniania: eval 'ssh-agent -s'
douglaslps
2

Jak nazwać swój klucz prywatny? Powinien mieć domyślną nazwę pliku id_rsa (zmień nazwę pliku pem na /home/ubuntu/.ssh/id_rsa)

Andriej Michałow
źródło
nazywał się eldad.pem (domyślna nazwa z AWS). Zmieniłem nazwę na id_rsa i zadziałało. czy istnieje sposób, aby zachować go pod obecną nazwą i nadal go używać?
user798562,
Tak, Daniel już o tym pisał w swojej odpowiedzi :)
Andriej Michałow
1

Możesz użyć ssh-agentissh-add uniknąć konieczności jawnego podawania klucza prywatnego.

Możesz umieścić polecenia w swoim .profilelub .bashrctak, aby były wykonywane przy każdym logowaniu. Możesz znaleźć przykładowy skrypt startowy na dole tego postu .

David Levesque
źródło
Zrobiłem to, ale kiedy uruchomię ponownie - muszę to zrobić od nowa. Jakiś sposób, aby tego uniknąć?
user798562,
Zmodyfikowałem moją odpowiedź, aby to uwzględnić.
David Levesque
0

Klient ssh szuka w identify fileoparciu o konfigurację ustawioną w /etc/ssh/ssh_config. Możesz więc podać tam plik tożsamości i pamiętaj, że w pliku konfiguracyjnym klienta ssh może znajdować się wiele plików tożsamości. Ze strony podręcznika 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).

Na przykład dla klucza RSA domyślną lokalizacją jest ~ / .ssh / id_rsa. Jak sugerował Andriej Michałow, możesz umieścić swój klucz prywatny w / home / ubuntu / ssh / id_rsa i będziesz mógł się połączyć bez podawania go w wierszu poleceń. Jeśli ta nazwa pliku już istnieje i zawiera inny klucz prywatny, nadal możesz dostosować plik konfiguracyjny klienta ssh w IdentityFileparametrze.

Daniel t.
źródło