% master: git_auf_dem_ssh-server_einrichten.tex
% Git auf dem SSH-Server einrichten v0.1
% 2017-01-09 (Rx)

\section{Git auf dem SSH-Server einrichten}
%------------------------------------------

Einrichtung des SSH-Zugangs auf dem Server mit der Authorized-Keys-Methode zur
Authentifizierung der Benutzer.

\begin{verbatim}
sudo adduser git                 Benutzer git anlegen
su git                           Rechte von User git erlagen
cd                               ins Home ~ Verzeichnis des Users wechseln
mkdir .ssh                       Verzeichnis .ssh anlegen
\end{verbatim}

- öffentliche SSH-Schlüssel der Entwickler zu der Authorized-Keys-Datei
  des Benutzers git hinzuzufügen.
\begin{verbatim}
cat /tmp/id_rsa.user1.pub > ~/.ssh/authorized_keys
                                 authorized_keys erstellen und User1 einfügen
cat /tmp/id_rsa.user2.pub >> ~/.ssh/authorized_keys
                                 User2 einfügen
cat /tmp/id_rsa.user3.pub >> ~/.ssh/authorized_keys
                                 User3 einfügen
\end{verbatim}

- Leeren Ordner anlegen und mit der Option --bare ein Repository ohne ein
  Arbeitsverzeichnis erzeugen.
\begin{verbatim}
cd /srv                          in den Ordner srv wechseln
mkdir git                        git Ordner anlegen
cd git                           in den Ordner git wechseln
mkdir project.git                project.git Ordner anlegen
cd project.git                   in den Ordner project.git wechseln
git --bare init                  Repository ohne ein Arbeitsverzeichnis erzeugen
\end{verbatim}

- Die erste Version des Projektes in das Repository hochladen
\begin{verbatim}
cd project                       in das Projekt wechseln
git init                         Projekt Repository herstellen
git add .                        alle Dateien um Index hinzufügen
git commit -m 'initial commit'   Index zum Working Tree hinzufügen
git remote add origin git@gitserver:/srv/git/project.git
                                 Server hinzufügen
git push origin master           Commits und Referenzen auf den Server hochladen
\end{verbatim}

- Repository klonen und Änderungen hochladen
\begin{verbatim}
git clone git@gitserver:/srv/git/project.git     Repository klonen
cd project                                       ins Projekt wechseln
vim README                                       Projekt bearbeiten
git commit -am 'fix for the README file'         Änderung speichern
git push origin master                           Änderung hochladen
\end{verbatim}

- Git-Zugang absichen
\begin{verbatim}
/etc/passwd
         git:x:1000:1000::/home/git:/bin/sh      /bin/sh auf
         git:x:1000:1000::/home/git:/usr/bin/git-shell
                                                 /usr/bin/git-shell ändern
\end{verbatim}