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
.pubfájl tartalma - Ha a szervernek csak
git pullkell, 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.