Ich habe derzeit einen alten SSH-Schlüssel auf einen Server hochgeladen. Das Problem ist, dass ich mein ~/.ssh
Verzeichnis verloren habe (mit dem Original id_rsa
und den id_rsa.pub
Dateien).
Folglich möchte ich den alten SSH-Schlüssel direkt auf dem Server entfernen und einen neuen hochladen.
Ich habe den folgenden Befehl ohne Erfolg versucht:
$> ssh-add -D
Gibt es eine Möglichkeit, einen SSH-Schlüssel vollständig zu entfernen?
ssh-add -d
?Antworten:
Beachten Sie, dass es mindestens zwei Fehlerberichte gibt, um Schlüssel
ssh-add -d/-D
nicht zu entfernen:ssh-add -D
SSH-Schlüssel wird nicht aus demgnome-keyring-daemon
Speicher entfernt "ssh-add -D
Löschen aller Identitäten funktioniert nicht. Warum werden alle Identitäten automatisch hinzugefügt? "Das genaue Problem ist:
Genauer gesagt zum Thema:
Dieser Fehler wurde in Ubuntu 14.04.4 noch vor zwei Tagen (21. August 2014) bestätigt.
Eine mögliche Problemumgehung:
Eine weitere Problemumgehung:
Dieser Kommentar schlägt tatsächlich vor:
Ryan Lue fügt in den Kommentaren einen weiteren interessanten Eckfall hinzu :
Dies ist der Fall, wenn das
keygrip
wie hier hinzugefügt wurde .quelle
ssh-agent
undssh-add
die ausgewählte Antwort? Das Originalplakat sagte, er willremove the old SSH key directly on the server and upload a new one
. Das klingt so, als ob er~/.ssh/authorized_keys
auf dem Remote-Host bearbeiten möchte .git clone
wurde der erste Schlüssel in der Kette anstelle der Version in der Konfigurationsdatei auf der Ubuntu-Box verwendet. Der schlechte Schlüssel wurde automatisch angesaugt und an die Debian-Box weitergeleitet.id_rsa
undid_rsa.pub
insgesamt zu löschen , und der Schlüssel wurde immer noch angezeigt. Es stellte sich heraus, dass gpg-agent sie in einer~/.gnupg/sshcontrol
Datei zwischengespeichert hat. Ich musste sie manuell von dort löschen.Sofern ich nicht falsch verstehe, haben Sie Ihr
.ssh
Verzeichnis mit Ihrem privaten Schlüssel auf Ihrem lokalen Computer verloren und möchten daher den öffentlichen Schlüssel entfernen, der sich auf einem Server befand und eine schlüsselbasierte Anmeldung ermöglichte. In diesem Fall wird es in der.ssh/authorized_keys
Datei in Ihrem Home-Verzeichnis auf dem Server gespeichert . Sie können diese Datei einfach mit einem Texteditor bearbeiten und die entsprechende Zeile löschen, wenn Sie sie identifizieren können (noch einfacher, wenn es der einzige Eintrag ist!). Ich hoffe, dieser Schlüssel war nicht Ihre einzige Methode für den Zugriff auf den Server, und Sie haben eine andere Möglichkeit, sich anzumelden und die Datei zu bearbeiten. Sie können derauthorised_keys
Datei entweder manuell einen neuen öffentlichen Schlüssel hinzufügen oder verwendenssh-copy-id
. In beiden Fällen müssen Sie eine Kennwortauthentifizierung für Ihr Konto auf dem Server oder eine andere Identität oder Zugriffsmethode einrichten, um auf dieauthorized_keys
Datei auf dem Server zuzugreifen .ssh-add
Fügt Ihrem SSH-Agenten Identitäten hinzu, die die Verwaltung Ihrer Identitäten lokal übernehmen. "Die Verbindung zum Agenten wird über SSH-Remote-Anmeldungen weitergeleitet, und der Benutzer kann die von den Identitäten gewährten Berechtigungen an einer beliebigen Stelle im Netzwerk auf sichere Weise verwenden." (Manpage), also denke ich nicht, dass es das ist, was Sie in diesem Fall wollen. Soweit ich weiß, ist es nicht möglich, Ihren öffentlichen Schlüssel auf einen Server zu übertragen, ohne dass Sie über ein SSH-Login auf diesen Server zugreifen können.quelle
Wenn Sie versuchen, eine ssh-bezogene Operation auszuführen und die folgende Fehlermeldung erhalten:
Sie können den fehlenden SSH-Schlüssel wie folgt von Ihrem SSH-Agenten entfernen:
quelle
Ich habe die Anwendung "Passwörter und Schlüssel" in meiner Unity geöffnet und unerwünschte Schlüssel von Secure Keys -> OpenSSH-Schlüsseln entfernt . Sie wurden automatisch auch von ssh-agent -l entfernt .
quelle
~/.ssh
Ich kann bestätigen, dass dieser Fehler in Ubuntu 19.04 noch vorhanden ist. Die von @VonC vorgeschlagene Problemumgehung hat perfekt funktioniert und für meine Version zusammengefasst:
Als nächstes versuchte ich es
ssh-add -D
erneut undssh-add -l
sagte mir nach dem Neustart , dass der Agent keine Identität hat. Ich habe bestätigt, dass derssh-agent
Daemon noch läuftps aux | grep agent
. Also habe ich den Schlüssel hinzugefügt, den ich am häufigsten mit GitHub (ssh-add ~/.ssh/id_ecdsa
) benutze und alles ist gut!Jetzt kann ich die normalen Vorgänge mit meinem am häufigsten verwendeten Repository ausführen. Wenn ich gelegentlich Zugriff auf das andere Repository benötige, das den RSA-Schlüssel verwendet, reserviere ich nur ein Terminal dafür
export GIT_SSH_COMMAND="ssh -i /home/me/.ssh/id_rsa.pub"
. Gelöst! Dank geht an @VonC, um auf den Fehler und die Lösung hinzuweisen.quelle
Überprüfen Sie die SSH-Taste oder nicht in Ihrem System
Wenn nicht als
Vorbei im Terminal
Entfernen Sie den vorhandenen .ssh-Schlüssel
Erstelle neu
Neuen .ssh-Schlüssel erstellen -> ssh-keygen -t rsa -b 4096 -C "[email protected]"
Der öffentliche Schlüssel wurde in "/Users/administrator/.ssh/id_ed25519.pub" gespeichert.
quelle
Die Lösung für mich (OpenSuse Leap 42.3, KDE) bestand darin, den Ordner umzubenennen, der
~/.gnupg
anscheinend die zwischengespeicherten Schlüssel und Profile enthielt. Nach dem Abmelden / Anmelden von KDE wird ssh-add / agent erneut ausgeführt und der Ordner wird von Grund auf neu erstellt, aber die alten Schlüssel sind alle weg.Ich hatte keinen Erfolg mit den anderen Ansätzen.
quelle