Ich habe meinen SSH-Schlüssel auf meinem lokalen Computer generiert.
Mit dem folgenden Befehl habe ich dann meinen öffentlichen Schlüssel auf meinen Server kopiert:
ssh-copy-id username@remote_host
. Das lief problemlos.Ich habe bestätigt, dass die Dateien meines lokalen Computers
~/.ssh/id_rsa.pub
auf meinen Server unter kopiert wurdenmy_user's_home_directory/.ssh/authorized_keys
. Es sind keine anderen Dateien darin.Ich habe denselben öffentlichen Schlüssel auch in Gitlab kopiert.
Wenn ich versuche,
git clone
ein 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.
- 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 -A
Ihren 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 -c
sodass 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.