öffentlicher Schlüssel, der immer nach Passwort und Schlüsselphrase fragt

19

Ich versuche, mithilfe eines öffentlichen Schlüssels eine SSH-Verbindung von einem NAS zu einem Webserver herzustellen. NAS-Benutzer ist "root" und Webserver-Benutzer ist "backup"

Ich habe alle Berechtigungen richtig eingestellt und beim Debuggen der SSH-Verbindung erhalte ich:

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

Ich benutze den Befehl:

ssh -v -i /root/.ssh/id_dsa.pub [email protected]

Die Tatsache, dass es nach einer Passphrase fragt, ist sicherlich ein gutes Zeichen, aber ich möchte nicht, dass es nach dieser Passphrase oder einem Passwort fragt.

Andrew Atkinson
quelle

Antworten:

24

Das liegt daran, dass Ihr privater Schlüssel verschlüsselt ist ...

Sie können Ihren ssh-addSchlüssel mit dem folgenden Befehl einem ssh-Agenten hinzufügen oder die Passphrase (und damit die Verschlüsselung) aus dem Schlüssel entfernen:

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


BEARBEITEN

Oh, ich habe gerade festgestellt, dass Sie versuchen, Ihren öffentlichen Schlüssel zur Authentifizierung zu verwenden ... Sie möchten den privaten Schlüssel dort verwenden:

ssh -v -i /root/.ssh/id_dsa [email protected]

Und nur um absolut sicher zu machen, wird der Inhalt der Datei id_dsa.pubgeht in ~backup/.ssh/authorized_keysauf dem Webserver. Sie können den folgenden Befehl verwenden, um dies automatisch zu tun

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
andrekeller
quelle
bekomme noch das problem. Es hat funktioniert und mir gewährt, dass "Ihre Identifikation mit der neuen Passphrase gespeichert wurde". aber dann frage ich immer noch nach einem Passwort, wenn ich das nächste Mal versuche, mich anzumelden. Ich bin nicht sicher, was ich sonst noch versuchen soll ...
Andrew Atkinson
Überprüfen Sie meine aktualisierte Antwort ... Vielleicht hilft das ...
Andrekeller
Vielen Dank, anscheinend habe ich versucht, den öffentlichen Schlüssel mit dem öffentlichen Schlüssel zu vergleichen. Ich musste die Passphrase nicht entfernen
Andrew Atkinson,
Die Tatsache, dass ich meine Kneipe zur Authentifizierung benutzte (ein dummer Fehler), war das Problem. Vielen Dank!
Qix
6

Dies passierte mir, als der private Schlüssel, den ich hatte, nicht im OpenSSH-Format war.

Ursprünglich habe ich meinen Schlüssel mit PuttyGen auf Windows generiert und wurde mit der gleichen Aktion zurückgeworfen.

Ich konnte das Problem beheben, indem ich den Schlüssel in PuttyGen geladen und auf "Conversions" geklickt habe, um ihn in das OpenSSH-Format zu bringen.

Locane
quelle
2

Es gibt ein paar Dinge.

Wenn der KEY in erster Linie nach einem Passwort fragt, wurde der Schlüssel damit generiert. Zweitens wird der Schlüssel nicht authentifiziert, wenn das System danach zur Eingabe eines Kennworts auffordert. Das heißt, Sie müssen Ihren SSH-Schlüssel neu generieren (oder wie von @rbtux vorgeschlagen ändern) und die authorized_keys-Dateien reparieren.

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C "optionaler Kommentar" -f id_examplekey

Die Elemente in geschweiften Klammern sind Optionen, Typ und Bitgröße.

Dann müssen Sie den öffentlichen Schlüssel (.pub) zu den authorized_keysund authorized_keys2-Dateien hinzufügen (es ist ein weit verbreitetes Missverständnis, dass die .pub -Datei für die lokale Verwendung gedacht ist, jedoch zum Vergleich). Also im .sshOrdner des Servers .

$ cat id_examplekey.pub >> authorized_keys {, 2}

Als letztes sollten Sie sicherstellen, dass die Schlüsselberechtigungen vorhanden sind, chmod 600 id_exampleund um das Eingeben all dessen zu erleichtern , können Sie die Konfigurationsdatei einrichten: ~/.ssh/configAuf Ihrer lokalen Box (das ist ein Skelett, Sie können dies eine Tonne anpassen):

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey
Nerdwaller
quelle
Aber der Abschnitt im Debug lautet: debug1: Server akzeptiert Schlüssel: pkalg ssh-dss blen 433 Bedeutet dies nicht, dass der Schlüssel akzeptiert wurde? Ich habe wieder ohne Passwort erstellt, immer noch das gleiche? - Ich habe keine Ideen mehr? Vielen Dank
Andrew Atkinson
@ Andrew Atkinson Sieht aus wie Sie es unten haben. Sie benötigen den privaten Schlüssel auf dem Computer (lokal, Client, was auch immer) und den public.pub-Schlüssel, der zu den authorized_keys-Dateien hinzugefügt wird. Meine anderen Vorschläge sollen Ihnen helfen, Zeit zu sparen: D Viel Glück!
Nerdwaller
Sie schreiben: "In erster Linie, wenn der KEY nach einem Passwort fragt, wurde der Schlüssel damit generiert." <- Ja, obwohl ich gerade getestet habe, was der Fragesteller getan hat, tue ich -i mit öffentlichem Schlüssel $ ssh user@comp -i ~/.ssh/id_rsa.pubund es werden falsche Berechtigungen und private Rechte angegeben Der Schlüssel wird ignoriert. Ich habe also die Berechtigungen auf 600 geändert, wie es id_rsa tun würde, und es wurde nach einer Passphrase gefragt. Also, ja, es wird dann nach einer Passphrase gefragt , ob Sie die öffentlichen Schlüssel angeben, auch beide , obwohl der öffentliche Schlüssel und der private Schlüssel nicht mit einem Passwort generiert
barlop
2

Für mich, da der Schlüssel selbst verschlüsselt wurde, habe ich die folgenden Schritte befolgt:

  • Starten Sie ssh-agent: $ ssh-agent bash
  • Hinzufügen eines Standardidentitätsschlüssels zum Schlüsselmanager: $ ssh-add
  • Wenn Sie einen anderen Schlüssel hinzufügen möchten, gehen Sie wie folgt vor: $ ssh-add /location/of/key

Die Liste der aktuell geladenen Schlüssel kann jederzeit eingesehen werden:

$ ssh-add -l

Weitere Details erhalten Sie unter diesem Link

Sibi
quelle
1

Versuchen Sie https://wiki.gentoo.org/wiki/Keychain

Es ist eine Art Wrap on ssh-agentundssh-add

Vorteile: Sie müssen das Passwort nicht wiederholt eingeben, solange Sie nicht neu starten. Könnte in verwendet werden crontab.

Es könnte helfen.

Gon
quelle
1

Dies kann daran liegen, dass Sie einen DSA-Pubkey verwenden, der in OpenSSH v7 standardmäßig deaktiviert ist.

Wenn Sie das Schlüsselpaar nicht ändern können, können Sie als Problemumgehung Ihren SSH-Daemon auf webserver.com anweisen, diese Schlüsseltypen zu akzeptieren, /etc/ssh/sshd_configindem Sie die folgende Zeile aktualisieren oder entsprechend hinzufügen

PubkeyAcceptedKeyTypes=+ssh-dss

Und dann den Dienst neu starten

/etc/init.d/ssh restart                     # or equivalent
mosh442
quelle
0

Unter Mac OS X können Sie Ihren privaten Schlüssel mit dem folgenden Befehl zum Schlüsselbund hinzufügen:

ssh-add -K /path/to/private_key

Wenn Ihr privater Schlüssel unter ~ / .ssh gespeichert ist und den Namen id_rsa trägt:

ssh-add -K ~/.ssh/id_rsa

Sie werden dann aufgefordert, Ihr Kennwort einzugeben, das in Ihrem Schlüsselbund gespeichert wird.

Groot
quelle
Was muss ich auf dem Linux-Client tun, wenn der Mac-Client funktioniert?
bbaassssiiee