Bitbucket und SSH-Keys

Der Anbieter Bitbucket bietet (auch in den kostenpflichtigen Tarifen Standard und Premium) keine Möglichkeit, SSH-Keys mit Schreibrechten auf Repository-Ebene zu hinterlegen. Seinen persönlichen SSH-Key auf dem Production-Server zu hinterlegen, ist keine Option, da sonst von dort aus der Zugriff auf alle anderen Projekte besteht, an denen man momentan arbeitet. Zwar gibt es sog. Access Keys, diese ermöglichen jedoch nur Leserechte.


Entwickelt man also lokal an einem Projekt und bindet dieses Repository dann auf einem Production-Server mit Schreibrechten ein, gibt es zwei Möglichkeiten: Entweder man legt für diesen Zweck einen eigenen (zu lizenzierenden und ab 5 Usern kostenpflichtigen) Benutzer an, oder aber man nutzt das eher unbekannte SSH Agent Forwarding.

Mit diesem Verfahren kann man seinen lokalen SSH-Key auf einem Remote-Server in der laufenden Session wiederverwenden, ohne den Key dauerhaft dort hinterlegen zu müssen. Die Einrichtung ist simpel: Zunächst stellt man sicher, dass man sich sowohl bei Remote-Server als auch Bitbucket mit Hilfe seines SSH-Keys direkt verbinden kann. Anschließend startet man auf seiner lokalen Maschine den SSH-Agent mit eval `ssh-agent -s` und hinterlegt seinen momentanen Key mit ssh-add -k. Nun verbindet man sich mit aktiviertem Agent Forwarding mit dem Remote-Server via ssh -A username@host1 und kann anschließend ohne weitere Passwortabfrage auf sein Bitbucket-Repository zugreifen, ohne den SSH-Key des Remote-Servers bei dort hinterlegen zu müssen.

Eine andere Alternative ist der Umstieg zu einem gänzlich anderen Anbieter: GitLab beispielsweise bietet bereits im kostenlosen Tarif neben einem Quota von 10 GB (im Vergleich zu 2 GB bei Bitbucket), unbegrenzt viele Teammitglieder auch sog. Deploy Keys. Damit kann man jedem Repository individuell beliebig viele zusätzliche SSH-Keys (z.B. von dem Production-Server) hinterlegen, die Schreibrechte auf das Repository gewähren.

Zurück