Muss ich meinen privaten SSH-Schlüssel auf meinem Server speichern, um auf Git-Clone-Repos zuzugreifen, während ich per SSH auf den Server verbunden bin?

Muss ich meinen privaten SSH-Schlüssel auf meinem Server speichern, um auf Git-Clone-Repos zuzugreifen, während ich per SSH auf den Server verbunden bin?
  1. Ich habe meinen SSH-Schlüssel auf meinem lokalen Computer generiert.

  2. Mit dem folgenden Befehl habe ich dann meinen öffentlichen Schlüssel auf meinen Server kopiert: ssh-copy-id username@remote_host. Das lief problemlos.

  3. Ich habe bestätigt, dass die Dateien meines lokalen Computers ~/.ssh/id_rsa.pubauf meinen Server unter kopiert wurden my_user's_home_directory/.ssh/authorized_keys. Es sind keine anderen Dateien darin.

  4. Ich habe denselben öffentlichen Schlüssel auch in Gitlab kopiert.

  5. Wenn ich versuche, git cloneein Repo auf den Server zu laden, wird mir Folgendes angezeigt:

[email protected]: Permission denied (publickey,keyboard-interactive).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
  1. Ich kann mich problemlos per SSH mit meinem Server verbinden. Da mein Server aber meinen privaten Schlüssel nicht hat, erscheint es mir logisch, dass ich kein SSH-Git-Clone ausführen kann. Was ist hier das normale Verfahren? Ich kann einen normalen HTTPS-Download durchführen, ist das der Standardweg?

Antwort1

Sie können ssh -AIhren SSH-Agenten an den Remote-Host weiterleiten, der Ihre lokalen Schlüssel vom Remote-Server verwendet, ohne die Schlüssel selbst zu senden.

Dies scheint zwar eine sichere Option zu sein, aber tun Sie dies nurwenn Sie dem Remote-Server absolut vertrauen(d. h. aktivieren Sie dies nicht standardmäßig.) Der weitergeleitete SSH-Agent kann von jedem mit demselben Remote-Benutzer wie Sie oder mit Root-Rechten verwendet werden.

Wenn Sie sich für diesen Weg entscheiden, empfehle ich Ihnen, dem Agenten Schlüssel hinzuzufügen, ssh-add -csodass Sie bei Verwendung eines Schlüssels zur Bestätigung aufgefordert werden.

Antwort2

Git ist dezentralisiert. Könnte von Gitlab auf Ihren PC holen und dann von Ihrem PC auf den Server pushen. Der SSH-Client ist für beides Ihr PC, sodass Ihr privater Schlüssel oder weitergeleiteter Agent den Server nicht berührt.

Oder Sie könnten mehrere SSH-Schlüssel haben. Einen persönlichen für Ihren PC und einen anderen für den Server. Mehr Schlüssel zu verwalten, aber separat überwach- und steuerbar, im Stil eines Servicekontos.

Oder verwenden Sie Git nicht als Bereitstellungstool. Generieren Sie ein Paket oder ein anderes Archiv und installieren Sie es wie andere Software.

verwandte Informationen