Ich habe versucht, ein GitLab-Repository auf meinem NAS per SSH zu klonen und zu pushen, aber es erscheint folgender Fehler:
ssh: connect to host gitlab.com port XX: Network is unreachable
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Dies zeigt, dass Git keine Verbindung zum GitLab-Server herstellen kann. Im QNAP-Kontrollpanel ist die Option „SSH-Verbindung zulassen (nur Administratoren können sich remote anmelden)“ aktiviert. Gibt es weitere Einstellungen, die ich auf dem QNAP vornehmen muss, um eine SSH-Verbindung herzustellen? Vielen Dank für Ihre Unterstützung.
Was den SSH-Bereich betrifft, scheint es, dass sich die erlaubten Verschlüsselungsarten auf der SSH-Server-Seite geändert haben und ältere Versionen von TeraTerm sich deshalb nicht mehr verbinden konnten.
Wenn Sie vermuten, dass es ein Problem mit der SSH-Verbindung gibt, könnten Sie diesen Punkt überprüfen.
Wenn man den Text direkt liest, scheint es, als wäre der für die SSH-Verbindung benötigte Port auf dem NAS nicht geöffnet. Es wäre daher ratsam, auch die Einstellungen von QuFirewall usw. zu überprüfen.
Es sieht so aus, als würden Sie versuchen, auf gitlob.com zuzugreifen, aber wohin möchten Sie pushen?
Ich verstehe die Situation so, dass Sie einen gltlab Git-Server auf dem NAS eingerichtet haben, vom Client aus klonen konnten, aber das Pushen nicht funktioniert hat.
Vielleicht wäre es einen Versuch wert, als Push-Ziel die IP-Adresse des NAS zu verwenden.
Ich habe weder TeraTerm noch QuFirewall verwendet.
Nachdem ich, wie von Ihnen vorgeschlagen, das Push-Ziel auf die IP-Adresse des NAS geändert habe, erscheint beim Klonen nun folgender Fehler:
fatal: could not create work tree dir ‘project’: Permission denied
Auch beim Klonen über http tritt derselbe Fehler auf.
Ich wäre Ihnen sehr dankbar, wenn Sie mir weiterhelfen könnten.
※Nachtrag
Nachdem ich das Verzeichnis erneut gewechselt und es ausprobiert habe, ergab sich folgendes Ergebnis:
・Wenn ich git@XXXX:lab/project.git direkt von GitLab per SSH kopiere und klone
$ git clone git@XXXX:lab/project.git
Cloning into ‘project’…
ssh: Could not resolve hostname XXXX: Name or service not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
・Wenn ich git@XXXX:lab/project.git auf die IP des NAS ändere
$ git clone git@XXXX:lab/project.git
Cloning into ‘project’…
git@XXXX’s password:
Ich wusste nicht, welches Passwort hier verlangt wird.
Ich habe sowohl das GitLab- als auch das QNAP-Passwort ausprobiert.
Im QuLog Center erscheint eine Warnung, dass der Login mehrmals fehlgeschlagen ist.
Wenn eine Fehlermeldung angezeigt wird, sollten die Fehler meiner Meinung nach einzeln behoben werden.
fatal: could not create work tree dir ‘project’: Permission denied
Wenn diese Meldung erscheint, hat der Benutzer, der mit dem git-Befehl auf das Repository zugreift, vermutlich keine Berechtigung, einen Ordner zu erstellen.
Es wäre ratsam zu überprüfen, ob der Benutzer, der auf den git-Server zugreifen möchte, die entsprechenden Berechtigungen hat, z.B. die richtigen Rechte auf dem Server usw.
ssh: Could not resolve hostname XXXX: Name or service not known
Hier ist wahrscheinlich die Namensauflösung fehlgeschlagen.
Es wäre sinnvoll zu prüfen, ob die Namensauflösung für den Hostnamen z.B. mit nslookup funktioniert.
Wenn es sich um einen lokalen Zugriff handelt, könnte es auch helfen, den Hostnamen in der hosts-Datei einzutragen.
$ git clone git@XXXX:lab/project.git
Cloning into ‘project’…
git@XXXX’s password:
Hier wird versucht, mit dem Benutzer „git“ zuzugreifen, daher ist vermutlich das Passwort des git-Benutzers auf dem git-Repository gemeint.
In jedem Fall wäre es hilfreich, die Beziehung zwischen dem git-Repository und dem Client einmal zu ordnen, damit hier leichter Ideen eingebracht werden können.
Ich denke, auf QNAP ist das git-Kommando standardmäßig nicht installiert, verwenden Sie vielleicht docker oder ähnliches?
Sie haben also einen Git-Server per Docker auf Ihrem NAS eingerichtet. Verstanden.
Die von Ihnen gesendete URL scheint keine detaillierten Informationen zu enthalten, aber ich denke, es ist besser, dem Git-Container statt NAT eine Bridge-Konfiguration zu geben, sodass er die gleiche IP-Adresse wie das externe Netzwerk erhält.
Bei einer NAT-Konfiguration müssten Sie Port-Forwarding einrichten, und Sie müssten für HTTP- und HTTPS-Ports andere als 80 und 443 angeben, was die Konfiguration des Git-Clients unnötig kompliziert macht.
Für den lokalen Betrieb ist ein Zugriff per SSH meiner Meinung nach nicht zwingend erforderlich.
Wie wäre es, wenn Sie zunächst die einfachen Dinge überprüfen?
Ich denke, wenn Sie den Docker-Container per Bridge mit dem externen Netzwerk verbinden, sollte alles problemlos funktionieren.
Mit der oben genannten Methode ist das Klonen über http erfolgreich gelungen. Vielen Dank dafür.
Sie erwähnten, dass der Zugriff über ssh nicht zwingend erforderlich ist, aber muss ich jedes Mal die Zugangsdaten (Benutzername und Passwort) eingeben? Beim Klonen wurde ich danach gefragt.
Ich wäre Ihnen sehr dankbar, wenn Sie mir weiterhelfen könnten.
Es freut mich, dass es zunächst funktioniert hat.
Ob bei jedem Zugriff eine Authentifizierung erforderlich ist, hängt von den Einstellungen des Clients ab und ist clientabhängig.
(Ähnlich wie die „Merken“-Einstellung, wenn Sie im Browser auf das Einstellungsmenü des NAS zugreifen.)
Bitte überprüfen Sie das bei sich vor Ort.