Verwenden des gleichen privaten SSH-Schlüssels auf mehreren Computern

23

Ich habe ein Github-Repository, auf das ich von zwei verschiedenen Linux-Computern aus zugreifen möchte.

Bei der ersten Maschine folgte ich den Anweisungen von Github zum Generieren von SSH-Schlüsseln und fügte den resultierenden öffentlichen Schlüssel zu Github hinzu. Dieser Client funktioniert gut.

Für den zweiten Client habe ich die /home/{user}/.ssh/id_rsaDatei vom ersten Client kopiert . Ich dachte, das wäre alles, was ich tun müsste, aber wenn ich versuche, eine Verbindung herzustellen, erhalte ich die Meldung "Erlaubnis verweigert (publickey)".

Was vermisse ich?

Yarin
quelle

Antworten:

32

Derselbe SSH-Schlüssel sollte von mehreren Clients verwendet werden können. Ich habe verschiedene SSH-Schlüssel für verschiedene Netzwerke und sie sind tatsächlich auf einem verschlüsselten USB-Laufwerk gespeichert, das ich problemlos von verschiedenen Computern aus verwende.

SSH ist sehr wählerisch in Bezug auf Dateiberechtigungen, daher würde ich zuerst alle Berechtigungen /home/{user}bis hinunter zur id_rsaDatei selbst überprüfen .

SSH kümmert sich nicht wirklich um Gruppen- oder Weltschreibberechtigungen. Stellen Sie daher sicher, dass Sie chmod go-wIhr Ausgangsverzeichnis und das ~/.sshVerzeichnis für Starter haben. Ich würde auch sicherstellen, dass sie Ihrem Benutzer gehören chown ${USER}:${USER}.

Für den SSH-Schlüssel selbst habe ich chmod 600sie ...

Wenn Sie möchten, habe ich in der Antwort auf eine andere SSH-Frage zusätzliche Informationen dazu, wie ich meine SSH-Schlüssel verwalte .

Jeremy Bouse
quelle
3
Es war die Erlaubnis - Ich habe keinen Repräsentanten, um zu stimmen, aber vielen Dank
Yarin
6

Wenn Ihnen die Erlaubnis von Github verweigert wird, wird möglicherweise nicht die kopierte SSH-Schlüsseldatei abgerufen, sondern die Standardeinstellung des Systems. Eine einfache Möglichkeit, dies zu umgehen, besteht darin, eine ~/.ssh/configDatei zu erstellen und Folgendes darin abzulegen:

Host github.com
  Hostname      github.com
  User          git
  IdentityFile  ~/.ssh/yourkeyfile

Dadurch wird Ihr SSH-Client gezwungen, diesen Schlüssel nur für github.com zu verwenden.

Hoffe das hilft.

vmfarms
quelle
2
Ich habe keinen Repräsentanten, um zu stimmen, aber danke
Yarin
1

Ich weiß, dass dies alt ist, aber ich dachte, ich möchte darauf hinweisen, dass Sie auch den öffentlichen Schlüssel auf den zweiten Client kopieren müssen

(oder mit ssh-keygen -y -f ~ / .ssh / id_rsa_ ..> ~ / .ssh / id_rsa ... pub neu berechnen)

Von [1]:

  1. Authentifizierungsmethode für öffentlichen Schlüssel: "publickey"

    Die einzige erforderliche Authentifizierung "Methodenname" ist "Publickey"
    -Authentifizierung. Alle Implementierungen MÜSSEN diese Methode unterstützen.
    Es müssen jedoch nicht alle Benutzer über öffentliche Schlüssel verfügen, und
    es ist unwahrscheinlich, dass die meisten lokalen Richtlinien
    in naher Zukunft die Authentifizierung mit öffentlichen Schlüsseln für alle Benutzer erfordern .

    Bei dieser Methode dient der Besitz eines privaten Schlüssels als
    Authentifizierung. Diese Methode sendet eine Signatur, die
    mit einem privaten Schlüssel des Benutzers erstellt wurde. Der Server MUSS überprüfen, ob der Schlüssel
    ein gültiger Authentifikator für den Benutzer ist, und MUSS überprüfen, ob die
    Signatur gültig ist. Wenn beide Bedingungen erfüllt sind, MUSS die Authentifizierungsanforderung
    akzeptiert werden. Andernfalls MUSS es abgelehnt werden. Beachten Sie, dass der Server
    nach erfolgreicher Authentifizierung möglicherweise zusätzliche Authentifizierungen benötigt.

Ihr ssh-Client beginnt die Authentifizierung, indem er den öffentlichen Schlüssel (die oben in Fettdruck angegebene Signatur) an den Server sendet. Wenn der öffentliche Schlüssel ein autorisierter Schlüssel ist, sendet der Server eine zufällige Sitzungs-ID an Ihren Client zurück. Ihr Client codiert dann diese Sitzungs-ID mit dem privaten Schlüssel und sendet diesen an den Server zurück. Der Server decodiert diese Sitzungs-ID mithilfe des öffentlichen Schlüssels. Wenn sie mit der ursprünglichen Sitzungs-ID übereinstimmt, wird Ihr Client authentifiziert.

[1] [ http://www.openssh.org/txt/rfc4252.txt[1]

Jacob Church
quelle
0

Dies liegt wahrscheinlich daran, dass Sie die Berechtigung der Datei auf dem zweiten Client nicht kopiert haben.
Aber ein privater Schlüssel ist privat . Der richtige Weg ist, einen neuen privaten Schlüssel auf dem zweiten Client zu erstellen und dann seinen öffentlichen Schlüssel zu Github hinzuzufügen

Radius
quelle
Ich hatte vor, 1 Schlüsselpaar pro Benutzer für mehrere Clients jedes Benutzers zu erstellen. Aber ein Schlüsselpaar für jeden Client eines jeden Benutzers scheint mir nur, als würde es außer Kontrolle geraten ...?
Yarin
Wenn Sie für jeden Benutzer auf jedem Computer denselben privaten Schlüssel verwenden, scheint dies in Ordnung zu sein. Überprüfe einfach die Erlaubnis, wenn du mit scp mit -p flag kopierst, es sollte in Ordnung sein
Radius