wie man SSH zu EC2 ohne explizite Verwendung des PEM-Schlüssels?

21

Ich habe ein Windows als Hauptbetriebssystem. Mit VMware Player richte ich einen Ubuntu-Server 12.4 als Gastmaschine ein. Der Ubuntu-Server hat "Ubuntu" -Benutzer.

Ich habe eine neue EC2-Instanz + Setup-PEM-Schlüssel erstellt. Von der Windows-Maschine aus kann ich mit Putty + Pem Key ssh.

Ich habe meinem VMware Ubuntu-Server den PEM-Schlüssel hinzugefügt (/home/ubuntu/.ssh/). Außerdem habe ich die folgenden Berechtigungen festgelegt: chmod 700 /home/ubuntu/.ssh chmod 600 /home/ubuntu/.ssh/*

Durch den Ubuntu Server - versuchte ich SSH auf die EC2 - Instanz ohne Erfolg: ssh ubuntu@EC2_IP Permission denied (publickey) . Wenn ich den PEM-Schlüssel explizit benutze, funktioniert es: ssh -i /home/ubuntu/.ssh/NAME.pem ubuntu@EC2_IP - Bitte beachten Sie, dass ich den direkten Pfad zum Schlüssel verwenden muss, sonst bekomme ich Warning: Identity file NAME.pem not accessible: No such file or directory. Permission denied (publickey).

Bitte beraten. Vielen Dank!

user798562
quelle

Antworten:

18

Standardmäßig wird der SSH - Client für Schlüssel aussehen genannt id_rsa, id_dsaund id_ecdsain ~/.ssh/. Wenn Ihr Schlüssel nicht so benannt ist, müssen Sie ihn entweder wie bisher in der Befehlszeile -ioder in der Client-Konfiguration angeben.

Sie können so etwas hinzufügen, ~/.ssh/configum diesen Schlüssel beim SSHing zu EC2 automatisch auszuwählen:

Host *.compute-1.amazonaws.com
    IdentityFile ~/.ssh/ec2_rsa
mgorven
quelle
2

Wie benennen Sie Ihren privaten Schlüssel? Es sollte den Standardnamen id_rsa haben (benennen Sie die pem-Datei in /home/ubuntu/.ssh/id_rsa um)

Andrei Mikhaltsov
quelle
es hieß eldad.pem (Standardname von AWS). Ich habe es in id_rsa umbenannt und es hat funktioniert. Gibt es eine Möglichkeit, den aktuellen Namen beizubehalten und ihn trotzdem zu verwenden?
user798562
Ja, Daniel hat bereits in seiner Antwort darüber geschrieben :)
Andrei Mikhaltsov
1

Sie können ssh-agentund verwenden ssh-add, um zu vermeiden, dass Sie den privaten Schlüssel explizit angeben müssen.

Sie können die Befehle in Ihr .profileoder .bashrcso einfügen, sie werden bei jeder Anmeldung ausgeführt. Ein Beispiel für ein Startskript finden Sie unten in diesem Beitrag .

David Levesque
quelle
Ich habe das gemacht, aber wenn ich neu starte, muss ich das noch einmal machen. Wie kann man das vermeiden?
user798562
Bearbeitet meine Antwort, um das einzuschließen.
David Levesque
0

Der SSH-Client sucht identify filebasierend auf der in festgelegten Konfiguration /etc/ssh/ssh_config. Sie können dort also die Identitätsdatei angeben und sich daran erinnern, dass in der Konfigurationsdatei des ssh-Clients mehrere Identitätsdateien aufgeführt sein können. Von der SSH-Manpage -

    -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).

Für RSA-Schlüssel lautet der Standardspeicherort beispielsweise ~ / .ssh / id_rsa. Wie Andrei Mikhaltsov vorgeschlagen hat, können Sie Ihren privaten Schlüssel in / home / ubuntu / ssh / id_rsa ablegen und eine Verbindung herstellen, ohne ihn in der Befehlszeile anzugeben. Wenn dieser Dateiname bereits existiert und einen anderen privaten Schlüssel enthält, können Sie Ihre ssh-Client-Konfigurationsdatei dennoch am IdentityFileParameter anpassen .

Daniel t.
quelle