Ugrás a tartalomra

GIT Frissítve:

GitHub deploy key beállítása shared hostingon

Jelszó és token nélküli git pull a tárhelyen: repónként külön, csak olvasási jogú SSH deploy key, SSH aliasszal — több projekt egy szerveren is biztonságosan.

A cél: a szerveren a git pull ne kérjen GitHub felhasználónevet, jelszót vagy tokent, és egy kiszivárgott kulcs csak egyetlen repóhoz adjon (olvasási) hozzáférést.

1. SSH kulcs generálása a szerveren

Azzal a userrel, amelyik a git pull-t futtatja:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

ssh-keygen -t ed25519 \
    -C "example-project-deploy" \
    -f ~/.ssh/example_project_deploy

Automatikus deploy esetén a passphrase üresen hagyható. Létrejön a privát (example_project_deploy) és a publikus (example_project_deploy.pub) kulcs.

A privát kulcsot soha ne másold ki és ne töltsd fel sehova.

2. Publikus kulcs kimásolása

cat ~/.ssh/example_project_deploy.pub

3. Deploy key hozzáadása GitHubon

A repositoryban: Settings → Deploy keys → Add deploy key

  • Title: pl. Production server
  • Key: a .pub fájl tartalma
  • Ha a szervernek csak git pull kell, az Allow write access maradjon kikapcsolva.

4. SSH config alias

nano ~/.ssh/config
Host github-example-project
    HostName github.com
    User git
    IdentityFile ~/.ssh/example_project_deploy
    IdentitiesOnly yes
chmod 600 ~/.ssh/config

Az alias miatt ugyanazon a szerveren több repóhoz is külön kulcs használható.

5. Kapcsolat tesztelése

ssh -T github-example-project

A „Hi example-company/example-project! You've successfully authenticated, but GitHub does not provide shell access.” válasz sikert jelent, nem hibát.

6. Remote átállítása HTTPS-ről SSH-ra

git remote -v
git remote set-url origin git@github-example-project:example-company/example-project.git
git remote -v

7. Teszt

git pull

Ha nem kér felhasználónevet, jelszót vagy PAT-ot, kész.

Több projekt egy szerveren

Projektenként külön kulcs és alias:

Host github-project-a
    HostName github.com
    User git
    IdentityFile ~/.ssh/project_a_deploy
    IdentitiesOnly yes

Host github-project-b
    HostName github.com
    User git
    IdentityFile ~/.ssh/project_b_deploy
    IdentitiesOnly yes

Így minden repository saját, minimális jogosultságú kulcsot kap, és egy kulcs kompromittálódása nem nyit meg minden repót.