h1. Trucs et astuces pour git
- Contenu
- Je dois avoir un 'ssh-agent' qui tourne avec ma session (c'est souvent le cas par défaut sous linux)
- mon client ssh doit faire suivre l'agent au serveur, pour ça il faut taper 'ssh -A' ou avoir, dans /etc/ssh/ssh_config ou ~/.ssh/config
- Créer une clé ssh sur le serveur
- L'ajouter dans la forge en tant que 'pièce d'identité de déploiement' (deployment key)
- configurer mon serveur pour l'utiliser
- Je me crée (sur ma machine) des variables GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL :
- Dans mon fichier ~/.ssh/config, j'ajoute:
- sur le serveur (celui qui a la clé de déploiement), il faut dans /etc/ssh/sshd_config:
- Re-connectez-vous sur le serveur, et vérifiez que vos variables sont bien là:
h2. Utiliser ma clé ssh depuis une machine distante
Je dois avoir un 'ssh-agent' qui tourne avec ma session (c'est souvent le cas par défaut sous linux)¶
Pour vérifier:
echo $SSH_AUTH_SOCK
mon client ssh doit faire suivre l'agent au serveur, pour ça il faut taper 'ssh -A' ou avoir, dans /etc/ssh/ssh_config ou ~/.ssh/config¶
ForwardAgent yes
h3. Pour OSX, utiliser
ssh-add -K ~/.ssh/id_rsa
h3. Pour windows, http://blog.killtheradio.net/how-tos/ssh-agent-on-cygwin/
h2. utiliser une cle de déploiement sur un serveur pour récupérer le code
Créer une clé ssh sur le serveur¶
ssh-keygen -C "Deploiement sur $(hostname -s)" -f ~/.ssh/id_rsa_deploy -N ''
L'ajouter dans la forge en tant que 'pièce d'identité de déploiement' (deployment key)¶
Projet->Configuration->Dépôt->Ajouter une pièce d'identité de déploiement
configurer mon serveur pour l'utiliser¶
dans le fichier ~/.ssh/config de l'utilisateur sur le serveur:
Host git.centrale-marseille.fr IdentityFile ~/.ssh/id_rsa_deploy
h2. faire des commits avec sa cle depuis une machine distante
Exemple: sur une machine serveur je veux récupérer automatiquement mon dépôt GIT, mais je veux pouvoir commiter en utilisant ma clé (et mon identité):
Je me crée (sur ma machine) des variables GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL :¶
GIT_COMMITTER_EMAIL="moi@centrale-marseille.fr" GIT_COMMITTER_NAME="Prénom Nom" GIT_AUTHOR_EMAIL=$GIT_COMMITTER_EMAIL GIT_AUTHOR_NAME=$GIT_COMMITTER_NAME export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
Dans mon fichier ~/.ssh/config, j'ajoute:¶
Host * SendEnv LANG LC_* GIT_*
sur le serveur (celui qui a la clé de déploiement), il faut dans /etc/ssh/sshd_config:¶
AcceptEnv GIT_*
Re-connectez-vous sur le serveur, et vérifiez que vos variables sont bien là:¶
echo $SSH_AUTH_SOCK $GIT_COMMITTER_EMAIL
Les variables GIT_* écrasent les configuration de .gitconfig et des .git/config. Si vous n'utilisez ces variables que pour SSH, vous pouvez créer une commande ssh-with-git par exemple pour les initialiser.
ssh-with-git() { (GIT_COMMITTER_EMAIL="julien.enselme@centrale-marseille.fr" GIT_COMMITTER_NAME="Julien Enselme" GIT_AUTHOR_EMAIL=$GIT_COMMITTER_EMAIL GIT_AUTHOR_NAME=$GIT_COMMITTER_NAME export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME ssh $*) }
Mis à jour par Geoffroy Desvernay il y a presque 10 ans · 6 révisions verrouillé