Ich habe ein öffentliches / privates Schlüsselpaar. Keiner von beiden ist eine Art Passphrase zugeordnet.
Immer wenn ich versuche, mit dem privaten oder dem öffentlichen Schlüssel zu ssh (und ich bin mir ziemlich sicher, dass ich nur den öffentlichen Schlüssel verwenden sollte), werde ich nach einer Passphrase gefragt und kann dann natürlich keine Verbindung herstellen.
Hat jemand eine Idee, wie man das umgehen kann? Gebe ich einen Befehl falsch ein? Ich versuche, mit dem in ~ / .ec2 / key.ppk gespeicherten Schlüssel auf einen Server zu sshen, den ich in meiner ~ / .ssh / config-Datei eingerichtet habe (richtig, da genau diese Einrichtung auf einem anderen Server funktioniert)
Ich habe auch versucht, mit puttygen.exe einen neuen privaten Schlüssel mit einer Passphrase zu generieren, und diesen Schlüssel dann zu verwenden. Wenn ich die Passphrase eingebe, schlägt dies immer noch fehl.
ssh-rsa AAAAB3NzaC1y...... etc
das Format von openssh richtig? Ich habe dieses Format in meinem privaten Schlüssel. In der Kopfzeile heißt es:PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6
Die Datei wird jedoch als id_rsa-Datei gespeichert. Bedeutet das, dass dies immer noch im .ppk-Format ist, obwohl der Name der Datei nurid_rsa
.ppk
, immer noch im Kittformat , was mich verwirrte, da sie alle möglichen Fehler aufwies, aber keinen direkten Hinweis darauf gab, dass das Problem mit dem Format des Schlüssels zu tun hatte : stackoverflow.com/a/44391850/4752883Sie könnten ssh-agent ausführen. Sehen Sie hier für eine Diskussion.
Die Kurzversion, die für mich funktioniert hat (in Bash):
Ich nahm die 3 Linien, die es ausstößt, und führte sie aus. Eine andere Möglichkeit ist die Ausgabe von -s:
Dann habe ich meine Zugangsdaten hinzugefügt:
Jetzt gibt der Agent die Anmeldeinformationen ein, anstatt dass ich meine Passphrase eingeben muss.
Ich glaube, ssh-agent verschwindet, wenn die Shell es tut, daher sollte dies beim Start für maximale Bequemlichkeit geskriptet werden. Der Link, den ich geteilt habe, beschreibt auch die Skripterstellung.
quelle
Wenn Sie Ihren öffentlichen Schlüssel einrichten, haben Sie ihn wahrscheinlich (möglicherweise versehentlich) mit einer Passphrase eingerichtet.
Sie müssen wahrscheinlich neu starten - ich habe puttygen nicht verwendet, aber Sie können den öffentlichen Schlüssel in Ihrem .ssh-Verzeichnis löschen (oder umbenennen),
ssh-keygen
einen neuen erstellen (wobei Sie sicher sein müssen, keine Passphrase anzugeben) und dann Geben Sie den öffentlichen Schlüssel für die Datei "authorized_keys" auf dem Server frei, zu dem Sie eine Verbindung herstellen möchten.Möglicherweise müssen Sie auch Ihren alten Passphrasenschlüssel aus der Datei mit den autorisierten Schlüsseln auf dem Server entfernen, zu dem Sie eine Verbindung herstellen.
quelle
Stellen Sie sicher, dass der private Schlüssel
id_rsa
am Ende keine zusätzlichen Zeilenumbrüche enthält. In einigen Fällen veranlasst ein zusätzlicher Zeilenumbruch ssh-keygen, nach der Passphrase zu fragen. Versuchen Sie Folgendes:Prüfung:
quelle
-----END RSA PRIVATE KEY-----
nach der Passphrase für einen Schlüssel gefragt hat, für den noch kein Satz vorhanden war!Eine Sache zu überprüfen, wenn Ihre sshd_config-Datei StrictModes = yes hat, dann darf das Verzeichnis $ HOME oder $ HOME / .ssh nicht für Gruppen oder andere von der Welt beschreibbar sein. Andernfalls schlägt die Authentifizierung fehl, egal was passiert.
quelle
Ich habe den Fehler gemacht, meine Datei ~ / .ssh / id_rsa versehentlich mit meiner Datei ~ / .ssh / id_rsa.pub zu überschreiben. Wenn Sie dies tun, werden Sie von ssh nach einer Passphrase gefragt.
quelle
Ich bin neulich auf dieses Problem gestoßen. Insbesondere habe ich versucht, einen privaten AWS-Schlüssel von einem Computer auf einen anderen zu kopieren / einzufügen.
Ich habe die schlechte Angewohnheit, entweder das erste oder das letzte Zeichen zu verpassen. Es stellt sich heraus, dass Sie, wenn Sie nicht jeden Bindestrich am Ende Ihres privaten Schlüssels greifen - obwohl dies nichts mit dem Schlüsseltext selbst zu tun hat - zur Eingabe einer Passphrase für den privaten Schlüssel aufgefordert werden, bis Sie jedes Zeichen aus dem hinzufügen Schlüssel, von dem Sie kopiert haben (in meinem Fall bedeutete dies das Hinzufügen eines einzelnen Bindestrichs am Ende des Schlüssels.)
Ich nehme an, dies bedeutet, dass die beste Vorgehensweise darin besteht, die Textdatei über das Netzwerk zu versenden, anstatt zu versuchen, sie zwischen Terminalfenstern zu kopieren und einzufügen.
quelle
Unter OSX konnte ich einfach ausführen:
$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)
Das Kennwort wurde von der Anwendung Keychain Access im Ordner Applications> Utilities gespeichert. Ich habe gerade
id_
in das Suchfeld eingegeben .quelle
Versuchen Sie, die Protokolldateien auf dem Server anzuzeigen. Siehe / var / log / auth log (z. B. / var / log / authlog für OpenSSH, obwohl ich gesehen habe, dass einige Betriebssysteme Portable OpenSSH und /var/log/auth.log verwenden) und überprüfen Sie das Ende dieser Datei.
Die häufigsten Ursachen, die ich gesehen habe, sind falsche Berechtigungen (wie in der Antwort von TD1 vermerkt ), obwohl andere Probleme damit zusammenhängen können, dass sich der öffentliche Schlüssel (auf dem Server gespeichert) nicht in der richtigen Datei befindet oder dieser Schlüssel auskommentiert ist, oder a falsch geschriebener Benutzername.
Es kann auch hilfreich sein (zur Fehlerbehebung), dem Konto vorübergehend eine Passphrase zuzuweisen, um zu überprüfen, ob das Konto in diesem Fall erfolgreich angemeldet werden kann.
Wenn das Anzeigen der Protokolldatei nicht schnell zu einer Lösung führt, empfehle ich das Posten einer neuen Frage (da dies eine sehr allgemeine Frage ist), die die spezifischen Details aus der Protokolldatei enthält, damit spezifischere Anweisungen bereitgestellt werden können.
quelle
In meinem Team ist dies kein Problem vor Ort. Der SSH-Schlüssel und / oder der Zugriff des Benutzers wurde auf dem Server, mit dem die Verbindung hergestellt wird, nicht richtig konfiguriert (in unserem Fall eine Hosting-Plattform). Aus irgendeinem Grund wird eine Aufforderung zur Eingabe eines nicht vorhandenen SSH-Schlüssels ausgelöst.
quelle