So beheben Sie den SSH Copy-ID Fehler 'No Identities Found' (Keine Identitäten gefunden)

LinuxBeginner
Jetzt üben

Einführung

Der Befehl ssh-copy-id ist ein nützliches Werkzeug, um die SSH-Schlüsselbasierte Authentifizierung zwischen Servern einfach einzurichten. Es kann jedoch vorkommen, dass beim Versuch, diesen Befehl zu verwenden, der Fehler "/usr/bin/ssh-copy-id: error: no identities found" auftritt. Dieses Tutorial führt Sie durch die Schritte zur Fehlerbehebung und Behebung dieses Problems, um einen reibungslosen SSH-Schlüsselbasierten Authentifizierungsprozess zu gewährleisten. Am Ende dieses Labs werden Sie verstehen, wie die SSH-Schlüsselauthentifizierung funktioniert und in der Lage sein, sie auf Ihren Systemen ordnungsgemäß zu konfigurieren.

SSH-Schlüsselauthentifizierung verstehen

Bevor wir uns mit der Fehlerbehebung des Fehlers "no identities found" befassen, ist es wichtig zu verstehen, was SSH-Schlüsselauthentifizierung ist und wie sie funktioniert.

Was ist SSH-Schlüsselauthentifizierung?

Die SSH-Schlüsselauthentifizierung (Secure Shell) ist eine Methode, um sich sicher bei Remote-Systemen anzumelden, ohne jedes Mal ein Passwort eingeben zu müssen. Sie verwendet ein Paar kryptografischer Schlüssel:

  • Ein privater Schlüssel (private key), der auf Ihrem lokalen Rechner verbleibt
  • Ein öffentlicher Schlüssel (public key), der auf den Remote-Server kopiert wird

Wenn Sie versuchen, sich mit einem Remote-Server zu verbinden, verwendet Ihr SSH-Client Ihren privaten Schlüssel, um eine Signatur zu erstellen. Der Server überprüft diese Signatur anhand Ihres öffentlichen Schlüssels, der in seiner Datei authorized_keys gespeichert ist. Wenn die Signatur gültig ist, erhalten Sie Zugriff, ohne ein Passwort eingeben zu müssen.

Was ist ssh-copy-id?

Der Befehl ssh-copy-id ist ein Hilfsprogramm, das den Prozess des Kopierens Ihres öffentlichen Schlüssels auf einen Remote-Server vereinfacht. Er fügt Ihren öffentlichen Schlüssel der Datei ~/.ssh/authorized_keys des Remote-Servers hinzu, was eine passwortlose Authentifizierung bei zukünftigen Verbindungen ermöglicht.

Lassen Sie uns überprüfen, ob Sie bereits SSH-Schlüssel auf Ihrem System haben. Führen Sie den folgenden Befehl in Ihrem Terminal aus:

ls -la ~/.ssh

Wenn Sie keine Dateien sehen oder das Verzeichnis .ssh nicht existiert, machen Sie sich keine Sorgen - wir werden im nächsten Schritt alles erstellen.

SSH-Schlüssel generieren

Wenn Sie keine SSH-Schlüssel haben oder neue erstellen möchten, können Sie diese mit dem Befehl ssh-keygen generieren. Dies ist oft der erste Schritt zur Behebung des Fehlers "no identities found".

Ein neues SSH-Schlüsselpaar erstellen

Lassen Sie uns ein neues SSH-Schlüsselpaar generieren, indem wir den folgenden Befehl ausführen:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Dieser Befehl:

  • -t rsa gibt den Typ des zu erstellenden Schlüssels an (RSA)
  • -b 4096 gibt die Bitlänge an (stärkere Verschlüsselung)
  • -C fügt einen Kommentar (normalerweise eine E-Mail) hinzu, um den Schlüssel zu identifizieren

Wenn Sie diesen Befehl ausführen, werden Sie aufgefordert:

  1. Geben Sie einen Dateispeicherort ein, um den Schlüssel zu speichern (drücken Sie die Eingabetaste, um den Standardspeicherort ~/.ssh/id_rsa zu verwenden).
  2. Geben Sie eine Passphrase ein (Sie können zweimal die Eingabetaste drücken, um keine Passphrase zu verwenden, aber die Verwendung einer Passphrase fügt eine zusätzliche Sicherheitsebene hinzu).

Die Ausgabe sollte ähnlich aussehen wie:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/labex/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/labex/.ssh/id_rsa
Your public key has been saved in /home/labex/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCD your_email@example.com
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+

Überprüfen der SSH-Schlüsselerstellung

Lassen Sie uns nun überprüfen, ob die Schlüssel ordnungsgemäß erstellt wurden:

ls -la ~/.ssh

Sie sollten nun sowohl den privaten Schlüssel (id_rsa) als auch den öffentlichen Schlüssel (id_rsa.pub) in der Ausgabe sehen:

total 20
drwx------ 2 labex labex 4096 Sep 15 10:10 .
drwxr-xr-x 5 labex labex 4096 Sep 15 09:55 ..
-rw------- 1 labex labex 3389 Sep 15 10:10 id_rsa
-rw-r--r-- 1 labex labex  746 Sep 15 10:10 id_rsa.pub
-rw-r--r-- 1 labex labex  444 Sep 15 10:00 known_hosts

Lassen Sie uns auch den Inhalt Ihrer öffentlichen Schlüsseldatei anzeigen:

cat ~/.ssh/id_rsa.pub

Die Ausgabe sollte eine einzelne Zeile sein, die mit ssh-rsa beginnt, gefolgt von einer langen Zeichenkette und mit Ihrer E-Mail-Adresse oder Ihrem Kommentar endet.

Nachdem wir nun bestätigt haben, dass unsere SSH-Schlüssel existieren, können wir mit dem nächsten Schritt fortfahren: Fehlerbehebung und Behebung des Fehlers "no identities found".

Die Fehlermeldung "No Identities Found" verstehen und beheben

Nachdem wir nun unsere SSH-Schlüssel eingerichtet haben, wollen wir verstehen, warum die Fehlermeldung "no identities found" auftritt und wie man sie behebt.

Häufige Ursachen des Fehlers

Der Fehler "no identities found" tritt typischerweise aus einem der folgenden Gründe auf:

  1. SSH-Schlüssel existieren nicht
  2. SSH-Schlüssel befinden sich nicht am Standardspeicherort
  3. SSH-Schlüssel haben falsche Berechtigungen
  4. Der Befehl ssh-copy-id kann keine öffentlichen Schlüssel zur Verwendung finden

Da wir bereits bestätigt haben, dass unsere SSH-Schlüssel am Standardspeicherort existieren, überprüfen wir die Berechtigungen.

SSH-Schlüsselberechtigungen überprüfen und korrigieren

SSH ist aus Sicherheitsgründen sehr wählerisch in Bezug auf Dateiberechtigungen. Führen Sie den folgenden Befehl aus, um die Berechtigungen Ihres Verzeichnisses .ssh und dessen Inhalt zu überprüfen:

ls -la ~/.ssh

Für eine ordnungsgemäße Sicherheit:

  • Das Verzeichnis .ssh sollte die Berechtigungen 700 (rwx------) haben
  • Der private Schlüssel (id_rsa) sollte die Berechtigungen 600 (rw-------) haben
  • Der öffentliche Schlüssel (id_rsa.pub) sollte die Berechtigungen 644 (rw-r--r--) haben

Wenn Ihre Berechtigungen falsch sind, können Sie sie mit den folgenden Befehlen korrigieren:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

ssh-copy-id korrekt verwenden

Lassen Sie uns nun versuchen, den Befehl ssh-copy-id korrekt zu verwenden. Die korrekte Syntax lautet:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote_host

Wobei:

  • -i die zu verwendende Identitätsdatei (öffentlicher Schlüssel) angibt
  • username Ihr Benutzername auf dem Remote-Server ist
  • remote_host der Hostname oder die IP-Adresse des Remote-Servers ist

Für unsere Laborumgebung simulieren wir dies, indem wir den lokalen Rechner verwenden. Führen Sie Folgendes aus:

ssh-copy-id -i ~/.ssh/id_rsa.pub labex@localhost

Sie werden nach dem Passwort des Remote-Benutzers gefragt.

Öffnen Sie ein Terminalfenster in der Desktop-Umgebung, nur das Terminal der Desktop-Umgebung hat die Umgebungsvariablen gesetzt.

Retrieve Password

Um das Passwort abzurufen, führen Sie den folgenden Befehl aus.

printenv | grep PASSWORD

Hinweis: Sie müssen diesen Befehl im Terminal der Desktop-Umgebung ausführen, nicht in dem Terminal, das Sie über die obere Menüleiste geöffnet haben.

Dieser Befehl zeigt alle Umgebungsvariablen an, die "PASSWORD" enthalten. Suchen Sie nach einer Zeile, die LABEX_PASSWORD=... enthält. Die Zeichen nach dem Gleichheitszeichen sind Ihr Passwort.

Sie würden dieses Passwort eingeben, und der öffentliche Schlüssel würde auf den Remote-Server kopiert.

Wenn Sie eine Meldung wie "Number of key(s) added: 1" sehen, wurde Ihr Schlüssel erfolgreich kopiert.

SSH-Schlüsselauthentifizierung überprüfen

Nachdem wir den Fehler "no identities found" behoben und unseren SSH-Schlüssel erfolgreich auf den Remote-Server kopiert haben, wollen wir überprüfen, ob die SSH-Schlüsselauthentifizierung ordnungsgemäß funktioniert.

SSH-Schlüsselauthentifizierung testen

In einer realen Umgebung würden Sie die SSH-Schlüsselauthentifizierung testen, indem Sie sich mit dem Remote-Server verbinden:

ssh username@remote_host

Wenn Ihr SSH-Schlüssel korrekt eingerichtet ist, sollten Sie sich ohne Eingabe eines Passworts anmelden können (es sei denn, Sie haben eine Passphrase für Ihren Schlüssel festgelegt, in diesem Fall müssten Sie diese eingeben).

Für unsere Laborumgebung können wir dies testen, indem wir versuchen, uns per SSH mit localhost zu verbinden:

ssh labex@localhost

Wenn Sie eine Aufforderung erhalten, die Verbindung zu bestätigen (weil localhost nicht in Ihrer Datei mit bekannten Hosts enthalten ist), geben Sie yes ein.

Möglicherweise sehen Sie eine Meldung wie:

The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCD.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Wenn Sie nach einem Passwort gefragt werden, bedeutet dies, dass die SSH-Schlüsselauthentifizierung noch nicht funktioniert. Wenn Sie sich jedoch erfolgreich ohne Eingabe eines Passworts anmelden, funktioniert Ihre SSH-Schlüsselauthentifizierung korrekt.

Häufige Probleme und Lösungen bei der SSH-Schlüsselauthentifizierung

Wenn Sie weiterhin Probleme mit der SSH-Schlüsselauthentifizierung haben, finden Sie hier einige häufige Probleme und Lösungen:

  1. SSH-Serverkonfiguration: Der SSH-Server muss so konfiguriert sein, dass er die Authentifizierung mit öffentlichen Schlüsseln zulässt. Dies ist normalerweise standardmäßig aktiviert, aber Sie können dies überprüfen, indem Sie die Datei /etc/ssh/sshd_config auf dem Remote-Server untersuchen:

    grep PubkeyAuthentication /etc/ssh/sshd_config

    Es sollte PubkeyAuthentication yes angezeigt werden.

  2. Dateibesitz (File Ownership): Ihr Home-Verzeichnis und das Verzeichnis .ssh müssen Ihnen gehören:

    ls -ld ~ ~/.ssh

    Beide sollten Ihren Benutzernamen als Eigentümer anzeigen.

  3. SSH-Verbindung debuggen: Sie können das Verbose-Flag verwenden, um SSH-Verbindungen zu debuggen:

    ssh -v labex@localhost

    Dies zeigt detaillierte Informationen über den Authentifizierungsprozess an, die helfen können, das Problem zu identifizieren.

Best Practices für die SSH-Schlüsselverwaltung

Hier sind einige Best Practices für die Verwaltung von SSH-Schlüsseln:

  1. Verwenden Sie eine Passphrase: Erwägen Sie bei der Generierung Ihres SSH-Schlüssels die Verwendung einer Passphrase für zusätzliche Sicherheit.
  2. Verschiedene Schlüssel für verschiedene Server: Für erhöhte Sicherheit sollten Sie verschiedene Schlüssel für verschiedene Server oder Zwecke verwenden.
  3. Sichern Sie Ihre Schlüssel: Bewahren Sie Sicherungskopien Ihrer SSH-Schlüssel an einem sicheren Ort auf.
  4. Regelmäßiges Rotieren von Schlüsseln: Für sensible Umgebungen sollten Sie Ihre SSH-Schlüssel regelmäßig rotieren.

Indem Sie diese Schritte und Best Practices befolgen, können Sie sicherstellen, dass die SSH-Schlüsselauthentifizierung zuverlässig und sicher funktioniert.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Fehler "no identities found" bei der Verwendung des Befehls ssh-copy-id beheben und lösen können. Wir haben Folgendes behandelt:

  1. Verstehen der SSH-Schlüsselauthentifizierung und der Funktionsweise des Befehls ssh-copy-id
  2. Generieren von SSH-Schlüsselpaaren mit dem Befehl ssh-keygen
  3. Überprüfen und Korrigieren von SSH-Schlüsselberechtigungen
  4. Korrekte Verwendung von ssh-copy-id, um Ihren öffentlichen Schlüssel auf einen Remote-Server zu kopieren
  5. Testen und Verifizieren der SSH-Schlüsselauthentifizierung
  6. Häufige Probleme und Best Practices für die SSH-Schlüsselverwaltung

Mit diesen Fähigkeiten können Sie nun sichere, passwortlose SSH-Verbindungen zwischen Systemen einrichten, was für eine effiziente Systemadministration und Automatisierung unerlässlich ist. Die SSH-Schlüsselauthentifizierung bietet nicht nur eine bessere Sicherheit als die Passwortauthentifizierung, sondern vereinfacht auch den Anmeldevorgang für legitime Benutzer.

Denken Sie daran, dass die ordnungsgemäße Sicherung Ihrer SSH-Schlüssel von entscheidender Bedeutung ist, da diese direkten Zugriff auf Ihre Systeme ermöglichen. Bewahren Sie Ihre privaten Schlüssel stets sicher auf und erwägen Sie die Verwendung von Passphrasen für zusätzlichen Schutz.