ssh-copy-id - Erlaubnis verweigert (publickey) [geschlossen]

30

Ich möchte einen SSH-Tunnel zum MySQL-Server einrichten, der sich auf einem Computer mit einer virtuellen Maschine befindet. Auch der Tunnel muss funktionieren, wenn die Maschine neu gestartet wird.

Nehmen wir also an, A ist ein Computer mit Linux-Software. B - Virtuelle Maschine in Computer A.

MySQL ist in B.

C - ist eine virtuelle Maschine in Computer A, die in B eine Verbindung zu MySQL herstellen möchte.

Nun zu diesem Artikel: http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

Ich versuche, den öffentlichen Schlüssel auf den Remote-Server zu kopieren. Ich denke, ich muss es auf Computer A kopieren.

ssh-copy-id -i id_rsa.pub.bak [user]@[IP of A] -p [port of A]
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

Jetzt habe ich versucht, die Passphrase der Datei id_rsa.pub.bak einzugeben. Es bestritt.

Dann sehe ich, dass es den Schlüssel in /home/[userowntown/.ssh/id_rsa verwendet, der sich vom öffentlichen Schlüssel unterscheidet, den ich zu kopieren versuche. Ich meine natürlich, dass der private Schlüssel sich unterscheidet, aber ich meine, dass ich den öffentlichen Schlüssel eines anderen kopiere Privat Schlüssel. Also habe ich versucht, ein Passwort dafür zu verwenden. Auch bestritten.

Wie kann ich debuggen, warum die Passphrase verweigert wird?

Aktualisieren

Basierend auf Kommentaren habe ich eine neue öffentliche Datei namens id_rsa.pub erstellt, in der sich jetzt alles in einer Zeile befindet

und laufen und trotzdem fehler bekommen.

ssh-copy-id -i id_rsa.pub [host and port] -vvv
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

Aktualisieren

Überprüfte die Berechtigungen für den Ordner .ssh und die Datei authorized_keys auf dem A-Computer - sie sind 700 und 600, so dass der Kommentar besagt, dass sie gut sind.

Aktualisieren

Versucht, Kennwortauthentifizierung Ja auf einem Computer festzulegen und den Dienst neu zu starten. Neustart wie von der Antwort nicht funktioniert, schrieb sshd nicht erkannt, so dass ich neu gestartet mit:

sudo /etc/init.d/ssh restart

Versuchen Sie dann erneut auf einem C-Computer, auf einen A-Computer zu kopieren.

ssh-copy-id -i id_rsa.pub [user@host] -p [port] -v

und immer noch dasselbe:

Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

Wenn ich den Schlüssel manuell nach authorized_keys kopiere, sehe ich, dass der öffentliche Schlüssel bereits vorhanden ist, den ich auch kopieren möchte. Ich fragte meinen Kollegen, er sagte, er habe es nicht kopiert. Also verstehe ich nicht mal, wie es dort sein kann.

Ok, wenn es dort ist, wäre es gut, aber wenn ich dort bleibe, kann ich mich nicht mit ssh verbinden, ohne eine Passphrase einzugeben. Aber ich konnte mich mit der Eingabe der Passphrase verbinden. Hier stimmt also eindeutig noch etwas nicht. Und der Schlüssel, den ich zu kopieren versuche, ist mit leerer Passphrase. Als ich mich mit ssh verbunden habe, habe ich eine Passphrase eingegeben, die nicht leer war.

Der gleiche öffentliche Schlüssel kann keine leeren Passphrasen und keine nicht leeren Passphrasen akzeptieren, was Sinn macht. Aber warum ist dann der öffentliche Schlüssel, den ich hochzuladen versuche, der gleiche wie der in authorized_keys, wenn die Passphrasen unterschiedlich sind? Ich habe nicht jedes einzelne Zeichen überprüft, aber es ist unwahrscheinlich, dass die Tasten so ähnlich sind, dass Anfang und Ende gleich sind, auch wenn die Passphrase meiner Meinung nach unterschiedlich ist.

Darius.V
quelle
Mit welchen Dateien beginnst id_rsadu? Ich würde erwarten ssh-copy-id, mit einer Fehlermeldung, wie Sie es nennen, zu scheitern, da es eine Datei erwartet, die mit endet .pub. Wie deine endet .bakwürde es wohl nutzen id_rsa.pub.bak.pub.
nlu
@nlu - Ich habe id_rsa, die ich durch Ziehen und Ablegen der Datei mit Notepad FTP Explorer kopiert habe. Habe auch id_rsa.bak das ich mit nano erstellt und inhalte mit maus aus notepad ++ eingefügt habe aber es sah so aus als hätte es denselben text aber irgendwie 2 spalten gemacht. Und außerdem habe ich id_rsa.pub.bak was auch mit nano gemacht wurde. Eigentlich hat es 3 Zeilen, aber das Original hat alles in einer Zeile. Weiß nicht, spielt es eine Rolle. Aber wie wir sehen habe ich keine Fehlermeldung über Dateinamen bekommen.
Darius.V
1
Es tut. Siehe hier zum Beispiel: snailbook.com/faq/publickey-userauth.auto.html ("Wenn Sie einen Texteditor verwenden, achten Sie darauf, dass die Zeilen in dieser Datei nicht unterbrochen werden.").
nlu
Die Frage ist geschlossen, weil sie denken, dass es kein System im Geschäftsumfeld ist, aber ich habe das Problem im Geschäftsumfeld gelöst.
Darius.V

Antworten:

25

Sie müssen sich tatsächlich anmelden, um Ihren Schlüssel zu kopieren. Sie haben keinen Zugriff auf den Remotecomputer (ungültige Schlüssel- und Kennwortauthentifizierung deaktiviert):

Aktivieren Sie die passwd-Authentifizierung in / etc / ssh / sshd_config erneut:

PasswordAuthentication yes

Starten Sie dann den Dienst neu:

service sshd restart

Kopieren Sie Ihren öffentlichen Schlüssel:

ssh-copy-id -i ~/.ssh/id_rsa.pub USER@HOST -p PORT
[Enter user password]

Versuchen Sie erneut, sich anzumelden. Es sollte kein Passwort erforderlich sein.

Deaktivieren Sie dann die Kennwortauthentifizierung.

Nabil Bourenane
quelle
Was passiert, wenn ich PasswordAuth auf dem Server, auf dem ich mich anmelden möchte, auf yes setze und mich mit putty über ein Passwort verbinden kann, aber ssh-copy-id immer noch nicht nach dem Passwort fragt und nur die Berechtigung verweigert (publickey) schreibt? ?
Darius.V
Hey, ich möchte mich bedanken !!! du hast meinen Tag gerettet!!! vielen Dank!!!
尤川豪
Dank @Nabil funktioniert dies auch ab Ubuntu 18.04. Nur eine Warnung für zukünftige Leser: Bearbeiten Sie / etc / ssh / sshd_config gemäß den Anweisungen und NICHT ssh_config (wie ich!). Auch ssh-copy-id USER @ HOST ist offensichtlich ausreichend.
Snidhi Sofpro
12

Permission denied (publickey) sagt der Remote-SSH-Server "Ich akzeptiere nur öffentliche Schlüssel als Authentifizierungsmethode, geh weg".

Das ist Ihre größte Herausforderung: Auf das Remote-System zugreifen. Sobald Sie das tun können, können Sie Ihren Schlüssel hochladen:

  • Mit ssh-copy-id- können Sie einen anderen Schlüssel angeben, wenn Sie beispielsweise gerade Ihren alten ersetzen.
  • Bearbeiten Sie den Remote-Benutzer ~/.ssh/authorized_keys, um Ihren Schlüssel manuell anzufügen.
Oli
quelle
5

Endlich das Problem gefunden.

Eigentlich musste ich den öffentlichen Schlüssel nicht kopieren. Der gleiche öffentliche Schlüssel gilt für beide privaten Schlüssel - mit und ohne Passphrase. Ich dachte, ich hätte einen privaten Schlüssel ohne Passphrase, aber das tat ich eigentlich nicht. Ich hatte nur .ppk ohne Passwort. Das war eine Fehlkommunikation. Also hat ein Mitarbeiter einen privaten Schlüssel ohne Passphrase erstellt und jetzt konnte ich mich mit ssh ohne Passphrase anmelden. Ich habe gelesen, dass es schlecht ist, kein Passwort zu haben, aber ein Kollege sagt, dass es in Ordnung ist. Ich brauchte keine Passphrase, weil ich beim Neustart ein Shell-Skript ausführen musste - ich möchte beim Neustart des Computers automatisch starten.

Wenn Sie sich dieses Mal ohne Passphrase anmelden möchten, überprüfen Sie, ob Ihr privater Schlüssel wirklich ohne Passphrase ist.

Darius.V
quelle