Warum ehrt SSH meine autorisierten Schlüssel nicht?

7743
pnongrata

Ich habe zwei Laptops zu Hause, auf denen Ubuntu 12.04 (Desktop) ausgeführt wird und auf demselben NetGear-WLAN-Router. Ich habe eine Technik namens "MAC-Bindung" auf einem der Computer verwendet, so dass der Router ihm immer die gleiche IP-Adresse 192.168.1.52 zuweist, wenn er versucht, eine Verbindung zum Internet herzustellen. ( Nicht verbunden: MAC-Bindung bedeutet nur, dass der Router so konfiguriert ist, dass immer eine bestimmte MAC-Adresse an eine bestimmte IP-Adresse gebunden wird. )

Nun habe ich 1 Laptop, der im Bereich 192.168.1.1 bis 192.168.1.50 immer eine zufällige IP zugewiesen wird, und 1 Laptop (mein "Build-Server"), der immer 192.168.1.52 zugewiesen wird.

Ich versuche, ein Bash-Skript zu schreiben, das ich auf dem "Client" -Laptop (der zufälligen IP-Maschine) sshausführen werde, der in den Build-Server (192.169.1.52-Maschine) eingefügt wird. Daher ist es notwendig, dass der Build-Server eine "dedizierte" IP von meinem LAN aus hat. Ich möchte diese Bash-Skripts nicht explizit mit einem Kennwort einspeisen lassen. Daher habe ich die Anweisungen in diesem Artikel befolgt, um SSH-Schlüssel zu generieren. Insbesondere ich:

  1. SSH-Schlüssel auf meinem Client-Laptop generieren ( id_rsa.pubDatei erstellen)
  2. Ich habe scpdie id_rsa.pubDatei auf meinem Build-Server und catin die ~/.ssh/authorized_keysDatei eingefügt. Ich habe überprüft, dass der SSH-Schlüssel meines Client-Laptops jetzt in der authorized_keysDatei auf dem Build-Server vorhanden ist.
  3. Ich habe das Terminal auf meinem Client-Laptop geschlossen und dann ein neues wieder geöffnet, nur für eine gute Maßnahme (falls Linux dies benötigt, um irgendetwas neu zu starten usw.).
  4. Ich habe dann versucht, SSH in den Build-Server einzulesen, und ich werde immer noch nach einem Passwort gefragt!

Was ist denn hier los? Warum erkennt SSH auf meinem Build-Server nicht die autorisierten Schlüssel von meinem Client-Laptop an? Muss ich irgendetwas auf dem Build-Server neu starten ( sshdusw.)? Habe ich hier wichtige Schritte verpasst? So starten Sie die Fehlerbehebung Danke im Voraus!

Update : Offenbar hat Ubuntu kein hat /var/log/secure.log, aber nicht eine hat /var/log/auth.log. Wenn ich dieses Protokoll auf dem Build-Server abschließe und dann versuche, von meinem Client-Laptop aus auf dem Build-Server SSH zu erstellen, geschieht Folgendes:

  1. Ich laufe ssh myuser@buildservervom Client-Laptop aus
  2. Ich werde nach einem Passwort gefragt.
  3. Sobald ich das Passwort eingebe, sehe ich die folgende Ausgabe in der auth.logDatei des Build-Servers :

 

May 21 12:02:07 buildserver sshd[28930]: error: RSA_public_decrypt failed: error:0407006A:lib(4):func(112):reason(106) May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: Called May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: username = [myuser] May 21 12:02:10 buildserver sshd[28930]: pam_sm_authenticate: /home/myuser is already mounted May 21 12:02:10 buildserver sshd[28930]: Accepted password for myuser from 192.168.1.3 port 39821 ssh2 May 21 12:02:10 buildserver sshd[28930]: pam_unix(sshd:session): session opened for user myuser by (uid=0) May 21 12:02:10 buildserver sshd[29003]: Received disconnect from 192.168.1.3: 11: disconnected by user May 21 12:02:10 buildserver sshd[28930]: pam_unix(sshd:session): session closed for user myuser 

Etwas, das ich vielleicht hätte erwähnen sollen: Auf beiden Rechnern (dem Client-Laptop und meinem Build-Server ist der Benutzername / Kontoname myuser) - könnte Linux durch denselben Benutzernamen auf beiden Rechnern verwirrt werden?

3
Der Oberbegriff für "MAC Binding" ist eine * permanente DHCP-Reservierung *. Darth Android vor 11 Jahren 1
Beginnt Ihr öffentlicher Schlüssel mit `ssh-rsa` oder` ---- BEGIN SSH2 PUBLIC KEY ---- `? Darth Android vor 11 Jahren 0
Das erste, "ssh-rsa" ... ist das mein privater Schlüssel? pnongrata vor 11 Jahren 0
Nein, so sind meine wichtigsten Einträge, aber die Werkzeuge scheinen immer die letztere Art zu generieren, und ich konvertiere sie immer. Sehen Sie meine Antwort. Darth Android vor 11 Jahren 0
Verwenden Sie "ssh-agent" zur Verwaltung Ihres privaten Schlüssels? Funktioniert es, wenn Sie `SSH_AUTH_SOCK = 0 ssh buildserver` verwenden? Darth Android vor 11 Jahren 0

3 Antworten auf die Frage

6
Nathan C

Erster Schritt: ssh mit neu starten /etc/init.d/sshd restart. Stellen Sie außerdem sicher, dass die Berechtigungen für die authorized_users-Datei korrekt sind. Um zu überprüfen, verwenden chmod 600 ~/.ssh/authorized_keysund sicherstellen, dass es dem Benutzer gehört, unter dem Sie sich angemeldet haben.

Danke @Nathan C (+1) - Ich habe beide Vorschläge ausprobiert: Ich habe `ssh` neu gestartet (via` sudo service ssh stop`, dann `sudo service ssh start`), und dann habe ich die Berechtigungen für` authorised_keys` von 700 auf 750 geändert Bitte beachten Sie, dass ich einen Dienst mit dem Namen `ssh` neu gestartet habe, ** nicht **` sshd` wie von Ihnen vorgeschlagen. Es scheint nicht, dass auf meinem Build-Server ein Dienst mit dem Namen `sshd` installiert ist (denken Sie daran, es ist ein Ubuntu-Desktop). * Dies könnte also mein Problem sein. * Wenn ja, was ist die Lösung? Wenn nicht, kann Ihnen noch etwas einfallen? Danke noch einmal! pnongrata vor 11 Jahren 1
Der Desktop-Bereich spielt keine Rolle (da nur die grafische Benutzeroberfläche ihn zum "Desktop" macht). Hat das `/ var / log / secure.log` etwas, das auf den Schlüssel verweist? Nathan C vor 11 Jahren 2
@TicketMonster - Außerdem müssen Sie "cat id.pub >> authorised_keys2" eingeben. Abhängig von den aktivierten ssh-Protokollen benötigen Sie sowohl authorized_keys als auch authorised_keys2. Ein Neustart des Dienstes ist nicht erforderlich, es sei denn, Sie ändern die ssh / sshd-Konfigurationen. nerdwaller vor 11 Jahren 1
Nochmals vielen Dank @NathanC (+1) - bitte sehen Sie mein Update am Ende meiner ursprünglichen Frage und lassen Sie mich wissen, was Sie denken. pnongrata vor 11 Jahren 0
Danke @nerdwaller (+1) - Ich werde es in der Zwischenzeit versuchen. Eine Sache, wenn das, was Sie sagen, wahr ist, warum erwähnt dann keines der Tutorials mit dem Titel "So verwenden Sie SSH-Schlüssel" "authorised_keys2"? Ich bin ein bisschen skeptisch, weil `id.pub` nicht mein privater Schlüssel ist? Warum sollte der Build-Server meinen privaten Schlüssel haben?!? Danke noch einmal! pnongrata vor 11 Jahren 0
@TicketMonster `id.pub` ist Ihr` pub`lic-Schlüssel. id_rsa sollte Ihr privater Schlüssel sein. "authorised_keys2" ist nicht unbedingt erforderlich. Meine Ubuntu-Boxen funktionieren gut mit meinen Schlüsseln in `authorised_keys '. Darth Android vor 11 Jahren 0
Okay, tut mir leid, Jungs, ich verwirre mich hier: Als ich `ssh-keygen 'verwendete, wurden 2 Dateien erstellt:` id_rsa` und `id_rsa.pub`. Das `id_rsa.pub` ist das, was auf dem Build-Server installiert ist (der von mir dorthin gekommen ist, um es zu scpieren und dann zu kitten). pnongrata vor 11 Jahren 0
Sieht aus wie der öffentliche Schlüssel beschädigt ist. Versuchen Sie es erneut zu kopieren. Falls erforderlich, regenerieren Sie Ihr Schlüsselpaar und beginnen Sie bei Null. Nathan C vor 11 Jahren 1
@TicketMonster Für das Protokoll sollte ".ssh" "700" sein und "authorised_keys" sollte "600" sein. Was passiert, wenn Sie diese Berechtigungen verwenden? Darth Android vor 11 Jahren 0
@DarthAndroid Ah, meine Berechtigungen waren falsch. Meine Antwort damit aktualisiert. Nathan C vor 11 Jahren 0
Ich habe die Schlüssel regeneriert, wie von @NathanC vorgeschlagen - und jetzt funktioniert es! Vielen Dank an alle !! pnongrata vor 11 Jahren 2
5
Ernestas

Das Löschen von id_rsa.pub hat mir geholfen (ich habe den ~ / .ssh / id_rsa-Schlüssel verwendet). Dies wurde verursacht, weil id_rsa.pub nicht mit meinem id_rsa-Schlüssel übereinstimmt.

1
Darth Android

What format is your public key in?

I find a lot of tools generate keys like this:

---- BEGIN SSH2 PUBLIC KEY ---- Comment: "1024-bit RSA, converted from OpenSSH by me@example.com" AAAAB3NzaC1yc2EAAAABIwAAAIEA1on8gxCGJJWSRT4uOrR13mUaUk0hRf4RzxSZ1zRb YYFw8pfGesIFoEuVth4HKyF8k1y4mRUnYHP1XNMNMJl1JcEArC2asV8sHf6zSPVffozZ 5TT4SfsUu/iKy9lUcCfXzwre4WWZSXXcPff+EHtWshahu3WzBdnGxm5Xoi89zcE= ---- END SSH2 PUBLIC KEY ---- 

And my authorized_keys file always contained the key like this:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA1on8gxCGJJWSRT4uOrR13mUaUk0hRf4RzxSZ1zRbYYFw8pfGesIFoEuVth4HKyF8k1y4mRUnYHP1XNMNMJl1JcEArC2asV8sHf6zSPVffozZ5TT4SfsUu/iKy9lUcCfXzwre4WWZSXXcPff+EHtWshahu3WzBdnGxm5Xoi89zcE= 

(The public key concatenated together all on one line)

Danke @Darth Android (+1) - Mein öffentlicher Schlüssel beginnt mit `ssh-rsa`, nicht mit dem` ---- BEGIN ... `-Stil. Was sagt dir das? pnongrata vor 11 Jahren 0
Nur das ist nicht die Antwort. Es tut uns leid :( Darth Android vor 11 Jahren 1