Ich richte zum ersten Mal einen NAS-Server mit Git ein, also verzeihen Sie mir bitte die Anfängerfragen (das bedeutet auch, dass ich für alle ausführlichen Erklärungen, die Sie mir geben können, sehr dankbar bin, denn ich bin diesbezüglich ein bisschen wie ein Fisch auf dem Trockenen).
Folgendes habe ich bisher getan:
- Listenpunkt
- NAS einrichten
- Habe Git gemäß dieser Anweisungen installiert:http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html(Ich habe es bis zum Ende von Schritt 5 geschafft)
- Habe Git auf meinem lokalen Computer am Laufen (habe
git init
das erste Commit durchgeführt)
Im Moment versuche ich herauszufinden, wie ich Schritt 6 dieser Anleitung umsetzen kann (http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html), damit ich Commits von meinem lokalen Computer verwenden git clone
und git push
an mein NAS senden kann.
Ich habe die Kommentare unter diesem Beitrag gelesen und Folgendes versucht:
Es wurde eine Datei mit dem Namen „
environment
Gespeichert in meinem lokalen Home-Ordner:“ erstellt.ssh/environment
und dort Folgendes eingegeben:PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
Habe mich mit bei meinem NAS angemeldet
ssh://root@ipaddresstonas
und Folgendes eingegeben:cd /usr/bin
ln -s /opt/bin/git*
Ich erhalte jedoch immer diese Ergebnisse:
Terminal auf meinem lokalen Rechner:
$ git remote -v
nas ssh://[email protected]/volume1/path/to/test (fetch)
nas ssh://[email protected]/volume1/path/to/test (push)
$ git push nas master
[email protected]'s password:
sh: git-receive-pack: not found
fatal: The remote end hung up unexpectedly
Und wenn ich versuche, $PATH
auf meinem lokalen Computer Folgendes einzugeben:
$ $PATH
-bash: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin: No such file or directory
Auf meinem NAS:
nas> cd /volume1/path/to/test
nas> ls
test.git
nas> $PATH
-sh: /opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin: not found
Außerdem nur ein Hinweis: Ich verwende Synology DS212J, das, glaube ich, „BusyBox“ verwendet, falls das hilft.
Ich bin wirklich verwirrt, wie ich Git für die Verwendung mit meinem NAS einrichte, wie ich Push-Aktionen auf mein NAS ausführen, wie ich svn checkout
auf einen anderen Computer klonen (oder das Gleiche tun) kann usw.
Antwort1
Der Pfad unter Unix ist eine Variable, die die Speicherorte verschiedener Programme enthält.
Wenn Sie einen Befehl wie eingeben whoami
, durchsucht die Shell alle in Ihrem $PATH aufgelisteten Ordner.
Geben Sie nun which whoami
Ihre Shell ein. Sie werden sehen, dass sich whoami wahrscheinlich in befindet /usr/bin/whoami
.
Wenn Sie /usr/bin
in Ihrem Pfad haben, können Sie einfach whoami
anstelle von eingeben /usr/bin/whoami
. Das ist so etwas wie eine Abkürzung.
Der Artikel, den Sie gerade lesen, zeigt, dass git-upload-pack
die Installation an einem Ort erfolgt, an dem die Shell nicht automatisch nach ausführbaren Dateien sucht. Sie müssen Ihrem Pfad /opt/bin
und hinzufügen /opt/sbin
, damit die Shell „findet“.git-upload-pack
Es gibt mehrere Möglichkeiten, einem Pfad ein Verzeichnis hinzuzufügen. Ich bevorzuge es, es in /etc/profile.d abzulegen, es scheint jedoch, dass Busy Box in diesem Verzeichnis nicht „sucht“. Stattdessen muss es der Datei ~/.ssh/environment hinzugefügt werden. Die Umgebungsdatei wird analysiert, wenn ein Benutzer über SSH eine Verbindung zum Server herstellt.
Schritt 6
Verwenden Sie einen Texteditor, um die folgende Datei zu bearbeiten (wahrscheinlich existiert sie noch nicht).
/home/<yourUser>/.ssh/environment
Fügen Sie die folgende Zeile zu /home//.ssh/environment hinzu
export PATH=$PATH:/opt/bin:/opt/bin
Bearbeiten Sie dann die folgende Datei (hierfür müssen Sie als Root angemeldet sein):
/etc/ssh/sshd_config
In dieser Datei finden Sie den Satz#PermitUserEnvironment no
Entfernen Sie den Kommentar (#) und ändern Sie nein in ja
Starten Sie Ihren SSH-Dienst neu oder starten Sie einfach das gesamte Gerät neu.
Sie können testen, ob es funktioniert hat, indem Sie den folgenden Befehl ausführen
echo $PATH |grep '/opt/bin'
Wenn es etwas zurückgibt, sollte alles funktionieren.
Antwort2
Richten Sie einen RSA-Schlüssel ein. Fügen Sie die Quell-IP zur Liste der vertrauenswürdigen IPs auf der Remote-Site hinzu. Generieren Sie einen Schlüssel ohne Passwort.Führen Sie den Git-Daemon auf dem anderen Computer aus.
Testen Sie Ihre Authentifizierung ssh
auf dem Client-Computer.