Zugriff auf »GitHub.com« oder »GitLab.com« hinter einer Firewall
Um ein Git-Repositorium auf »GitHub« oder »GitLab« nicht nur herunterzuladen, sondern auch Dateien dorthin zu schaffen, sind auf Client-Seite Zugriffe per ssh-Protokoll erforderlich. Hinter einer Firewall ist aber u.U. das ssh-Protokoll gesperrt. In einem solchen Fall kann man sich die Möglichkeiten eines speziellen Proxy-Servers zunutze machen. Folgende Vorgehensweise führt zum Erfolg:
Programm »proxytunnel« installieren
zypper ar \
http://download.opensuse.org/repositories/network:/utilities/openSUSE_13.1/network:utilities.repo
zypper ref 'network_utilities'
zypper in proxytunnel
(Repositorium ggf. anpassen!)
ssh-Konfiguration
Die Datei $HOME/.ssh/config
ist um folgende Zeilen zu ergänzen:
GitHub-Variante
Host gitproxy
User rolfn
Hostname ssh.github.com
Port 443
ProxyCommand /usr/bin/proxytunnel -p webproxy.berlin.ptb.de:8080 -d %h:%p
GitLab-Variante
Host gitlabproxy
User rolf.niepraschk
Hostname altssh.gitlab.com
Port 443
ProxyCommand /usr/bin/proxytunnel -p webproxy.berlin.ptb.de:8080 -d %h:%p
Statt »rolfn« ist der Nutzername auf »GitHub« anzugeben und »webproxy.berlin.ptb.de:8080« ggf. durch einen anderen Server und Port der Firewall zu ersetzen.
Konfiguration des lokalen git-Repositoriums
Die Datei .git/config
im lokalen git-Repositorium muss folgendermaßen ergänzt werden:
GitHub-Variante
[remote "origin"]
url = git@gitproxy:rolfn/REPO.git
fetch = +refs/heads/*:refs/remotes/origin/*
GitLab-Variante
[remote "origin"]
url = git@gitlabproxy:rolf.niepraschk/REPO.git
fetch = +refs/heads/*:refs/remotes/origin/*
Es können auch mehrere url-Zeilen verwendet werden, womit die push-Anweisung gleichzeitig mehrere Repositorien erneuert.