Ich habe einen Ubuntu-Server auf Amazon EC2, den ich für die Entwicklung verwende, und heute habe ich dumm alles aus meiner ~/.ssh/authorized_keys
Datei gelöscht . Glücklicherweise habe ich ein offenes SSH, so dass ich immer noch verbunden bin und die Datei reparieren kann, aber wenn ich versuche, meine Schlüsseldatei zurückzusetzen, funktioniert es nicht. Der Server auf meinem lokalen Computer verweigert mir weiterhin die Erlaubnis.
authorized_keys
Ich habe versucht, meinen SSH-Schlüssel mit ssh-rsa anzufügen und ssh-rsa auszulassen. Ich habe auch versucht, den SSH-Schlüssel in einer einzigen Zeile zu erstellen, aber das hat auch nicht funktioniert.
Gibt es noch etwas, was ich tun muss, um die Datei wie neu zu laden?
data-recovery
ssh
amazon-ec2
Dave Long
quelle
quelle
Antworten:
Sie sollten die Datei niemals mit ihrem Inhalt beginnend
-----BEGIN RSA PRIVATE KEY-----
auf dem Server speichern , das ist Ihr privater Schlüssel. Stattdessen müssen Sie den öffentlichen Schlüssel in die~/.ssh/authorized_keys
Datei einfügen.Dieser öffentliche Schlüssel hat die
.pub
Erweiterung, wenn er mit generiert wird,ssh-keygen
und sein Inhalt beginnt mitssh-rsa AAAAB3
. (Das Binärformat wird in den Antworten auf diese Frage beschrieben. )Die Berechtigungen
~/.ssh
auf dem Server sollten 700 sein. Die Datei~/.ssh/authorized_keys
(auf dem Server) sollte einen Modus von 600 haben. Die Berechtigungen des (privaten) Schlüssels auf der Clientseite sollten 600 sein.Wenn der private Schlüssel nicht mit einem Passwort geschützt war und Sie es auf dem Server ablegen, empfehle ich Ihnen, ein neues zu generieren:
Sie können dies überspringen, wenn Sie sicher sind, dass niemand den gelöschten privaten Schlüssel vom Server wiederherstellen kann.
Wenn dies nicht hilft, führen Sie die
ssh
Optionen für mehr Ausführlichkeit aus:Auf der Serverseite können Sie
/var/log/auth.log
Details überprüfen .quelle
ssh-keygen -t rsa
und die neu erstellteid_rsa.pub
Datei~/.ssh/authorized_keys
auf Ihrem Server ablegen . Siehe auch docs.amazonwebservices.com/AWSEC2/latest/UserGuide/…ssh-keygen -y -f key.pem > key.pub
Eine alternative Möglichkeit, Ihren öffentlichen Schlüssel auf dem Remote-Computer zu installieren
authorized_keys
:Einige Vorteile:
muss nicht
ssh-copy-id
installiert werden.garantiert, dass dies
mkdir
funktioniert, bevor versucht wird, eine Verknüpfungid_rsa.pub
zu erstellenauthorized_keys
.quelle
mkdir -p ~/.ssh
Teil der Antwort von @MariusButuc ändern,umask 077 && mkdir -p ~/.ssh
um sicherzustellen, dass es ordnungsgemäß funktioniert.Wenn Sie eine Anmeldebasierte Authentifizierung haben, können Sie
ssh-copy-id
Ihre öffentlichen Schlüssel an den Remote-Server anhängen.quelle
brew install ssh-copy-id
sudo port install openssh +ssh_copy_id
. Das+ssh_copy_id
installiert openssh mit der Variante ssh_copy_id.quelle
Der einfachste Weg ist, zu kopieren und ...
Sehen / kopieren Sie zuerst den Inhalt Ihres lokalen öffentlichen Schlüssels
id_rsa.pub
einschließlich des Anfangs "ssh-rsa", bis er mit Ihrer E-Mail-Adresse endet:Bearbeiten Sie anschließend
authorized_keys
den Inhalt Ihrer Zwischenablage auf dem Server und fügen Sie ihn unter den anderen Schlüsseln in dieser Datei ein:Und zu speichern
Ctl+O
, schließen Sie die DateiCtl+X
, die SSH - Sitzung beendenexit
und versuchen , in der Anmeldung zurück , um zu bestätigen es funktioniert. Wenn es nicht nach einem Passwort gefragt hat, hat es funktioniert.quelle
Ich dachte, ich kann dazu beitragen, da es sich speziell um AWS-Instanzen handelt und alle Antworten das Problem nur als Linux-Problem behandeln, als wäre es ein Stück Hardware. Als Erstes müssen Sie verstehen, dass Sie EC2-Instanzen niemals als Hardware behandeln sollten. Das wird nur mehr Arbeit zu schaffen, damit Sie sie als flüchtiges behandeln. Das ist die größte Hürde Ich sehe Menschen mit AWS haben. Erstellen Sie eine AMI für Ihre Instanz und fügen Sie den benötigten Schlüssel in die neue Instanz ein. cloud-init wird für Sie darum kümmern. Im Einzelnen müssen Sie nur den richtigen öffentlichen Schlüssel verwenden, um die neue Instanz aus dem AMI des Originals zu erstellen. Wenn Sie wie in den Kommentaren der genehmigten Antwort Ihr eigenes Schlüsselpaar aus Pub- und PEM-Dateien generieren möchten, bietet AWS die Möglichkeit, Ihre öffentlichen Schlüssel zur Verwendung in EC2 hochzuladen.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws
quelle
Nach dem Speichern des öffentlichen Schlüssels sollten Sie den privaten Schlüssel in einem Verzeichnis und einer Datei auf Ihrem PC speichern. Und in dem Auth-Abschnitt von ssh auf Kitt sollten Sie auf die private Schlüsseldatei verweisen, die Sie auf Ihrem Desktop gespeichert. Es wird klappen. Für mich geht das.
quelle
Rufen Sie auf dem Remotecomputer eine Shell ab, auf der Sie den Schlüssel ablegen möchten, und führen Sie dann diesen Einzeiler aus, um die erforderlichen Dateien und Verzeichnisse zu erstellen, ihre Berechtigungen festzulegen und den Schlüssel an die Datei anzuhängen. Natürlich müssen Sie den folgenden
KEYGOESHERE
Teil und den Kommentar danach ändern .quelle
Hier ist eine Variante, bei der sich möglicherweise eine Liste mit Dateinamen für öffentliche Schlüssel in einer Textdatei befindet und sich auch die große Menge an Dateien für öffentliche Schlüssel im selben Verzeichnis befindet.
Diese Variante kann hilfreich sein, wenn Sie eine große Liste mit zu importierenden öffentlichen Schlüsseldateien angegeben haben :-)
quelle