Bei der Secure Shell (SSH) handelt es sich um das Standard-Tool für verschlüsselten Zugriff auf entfernte Systeme. SSH ermöglicht das Einloggen auf einem Server von der heimischen Entwicklermaschine aus. Git nutzt SSH als Übertragungsprotokoll und erlaubt lesenden und schreibenden Zugriff auf Remote-Repositories.
Um die Authentifizierung der Maschine zu ermöglichen und die Fälschungssicherheit der übertragenen Daten sicherzustellen, kommt eine verschlüsselte Verbindung zum Einsatz. Ohne diese wäre es Fremden möglich, beliebige Änderungen an Repositories vorzunehmen.
Git per SSH nutzt asymmetrische Verschlüsselung als kryptografisches Verfahren. Dabei wird zunächst ein Paar aus privatem und öffentlichem Schlüssel erstellt. Man spricht auch von einem „Public-Private Keypair“. Der private Schlüssel verbleibt auf dem eigenen Rechner. Der öffentliche Schlüssel wird mit dritten Parteien, z. B. GitHub, geteilt.
Nutzt man einen SSH-Key zum Zugriff auf GitHub-Repositories, entfällt die Eingabe eines Kennworts. Generell gilt passwortloses Anmelden als sicherer, da kein Passwort durch Keylogger oder Trojaner abgegriffen werden kann. Statt einer Person, die das Passwort kennt, wird eine Maschine authentifiziert, auf welcher der private Schlüssel hinterlegt ist.
Die Nutzung von Git über SSH ist ausgesprochen praktisch. Einmal eingerichtet, erlaubt der SSH-Key dauerhaften Zugriff auf GitHub ohne weiteres Zutun. Auch andere Protokolle und Dienste profitieren von SSH-Keys für eine verschlüsselte Netzwerkverbindung. Neben Git mit SSH lässt sich das sichere SFTP-Protokoll zum Austausch von Dateien mit Servern einsetzen, ohne dass weitere Konfiguration vonnöten wäre.
Die Verbindung mit Git-Repositories erfolgt in der Regel von der Kommandozeile aus. Wurde ein SSH-Key eingerichtet, lässt sich problemlos ein Push auf ein eigenes Repository ausführen: