Gitlab, mehrere Accounts mit demselben ssh-key

TL;DR: Geht nicht 🙂

Aus­führ­li­che Geschichte:
Der Sohn möch­te ger­ne eine (sta­ti­sche) Web­site mit git ver­sio­nie­ren, was ich natür­lich unter­stüt­ze. Wir haben Git­lab, was liegt da näher als Git­lab Pages? Habe ich nicht hin­be­kom­men, viel­leicht, weil Git­lab bei mir hin­ter einem rever­sen Pro­xy (Apa­che) läuft.
Dann dach­te ich, ich kön­ne doch einen post-recei­ve-hook ver­wen­den, der nach erfolg­rei­chem push das Repo­si­to­ry in die Docu­men­tRoot des Web­ser­vers pullt.
Nach ein paar Fal­len (die größ­te: es muß alles als User git lau­fen, also muß git auch einen ssh-key haben und der muß beim Sohn im Git­lab bekannt sein) ging es. Ände­run­gen ins git­lab pushen, und instantan sind sie auf der Web­site. Sehr schön!

Nun habe auch ich eine sta­ti­sche Sei­te, und wenn das mit git beim Sohn geht, so muß es auch beim Vater gehen!
Also nach dem­sel­ben Sche­ma vor­ge­gan­gen — doch ach: ich kann den pubkey von git nicht zu mei­nem Account hinzufügen:

Der Key ist schon beim Sohn und kann des­we­gen nicht auch beim Vater sein (Sohn enterben?)
Gro­ßes Kino, und nun?
Der Hook, der beim Sohn funktioniert:

#!/bin/sh
cd /zroot/webroot/com/sokoll/sohn
git pull

Beim Vater funk­tio­niert nicht:

#!/bin/sh
cd /zroot/webroot/com/sokoll/vater
git pull

Weil eben der pubkey nicht vor­han­den ist und auch nicht bei Vater hoch­ge­la­den wer­den kann. Man müß­te dem git pull sagen kön­nen, wel­cher key genom­men wer­den soll, aber das geht nicht. Oder doch?
Doch, es geht, aber nicht direkt, son­dern über /var/opt/gitlab/.ssh/config.

# Sohn
Host sohn.gitlab.sokoll.com
  HostName gitlab.sokoll.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa-sohn
# Vater
Host vater.gitlab.sokoll.com
  HostName gitlab.sokoll.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa-vater

Natür­lich müs­sen dann die remo­tes geän­dert werden:

Sohn:

origin  git@sohn.gitlab.sokoll.com:sohn/sohn-repo.git (fetch)
origin  git@sohn.gitlab.sokoll.com:sohn/sohn-repo.git (push)

Vater:

origin  git@vater.gitlab.sokoll.com:vater/vater-repo.git (fetch)
origin  git@vater.gitlab.sokoll.com:vater/vater-repo.git (push)

Und schon nimmt git pro Repo­si­to­ry einen ande­ren Key.


Und wäh­rend ich das schrei­be ler­ne ich, daß das alles Quatsch ist und daß man ja auch lokal clonen/pullen kann🤦‍♂️.
Viel­leicht nützt es ja, wenn jemand meh­re­re Accounts auf einer Git­lab-Instanz hat. Kei­ne Ahnung, wie das bei Git­hub ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert