GitTips » Historique » Version 6
Geoffroy Desvernay, 07/01/2015 17:35
1 | 1 | Geoffroy Desvernay | h1. Trucs et astuces pour git |
---|---|---|---|
2 | |||
3 | {{>toc}} |
||
4 | |||
5 | h2. Utiliser ma clé ssh depuis une machine distante |
||
6 | |||
7 | # Je dois avoir un 'ssh-agent' qui tourne avec ma session (c'est souvent le cas par défaut sous linux) |
||
8 | Pour vérifier: <pre>echo $SSH_AUTH_SOCK</pre> |
||
9 | # 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 |
||
10 | <pre> |
||
11 | ForwardAgent yes |
||
12 | </pre> |
||
13 | |||
14 | h3. Pour OSX, utiliser |
||
15 | |||
16 | <pre>ssh-add -K ~/.ssh/id_rsa</pre> |
||
17 | |||
18 | h3. Pour windows, http://blog.killtheradio.net/how-tos/ssh-agent-on-cygwin/ |
||
19 | |||
20 | h2. utiliser une cle de déploiement sur un serveur pour récupérer le code |
||
21 | |||
22 | # Créer une clé ssh sur le serveur |
||
23 | <pre> |
||
24 | ssh-keygen -C "Deploiement sur $(hostname -s)" -f ~/.ssh/id_rsa_deploy -N '' |
||
25 | </pre> |
||
26 | # L'ajouter dans la forge en tant que 'pièce d'identité de déploiement' (deployment key) |
||
27 | Projet->Configuration->Dépôt->Ajouter une pièce d'identité de déploiement |
||
28 | # configurer mon serveur pour l'utiliser |
||
29 | dans le fichier ~/.ssh/config de l'utilisateur sur le serveur: |
||
30 | <pre> |
||
31 | Host git.centrale-marseille.fr |
||
32 | IdentityFile ~/.ssh/id_rsa_deploy |
||
33 | </pre> |
||
34 | |||
35 | 4 | Geoffroy Desvernay | h2. faire des commits avec sa cle depuis une machine distante |
36 | |||
37 | 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é): |
||
38 | 1 | Geoffroy Desvernay | |
39 | # Je me crée (sur ma machine) des variables GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL : |
||
40 | <pre> |
||
41 | GIT_COMMITTER_EMAIL="moi@centrale-marseille.fr" |
||
42 | GIT_COMMITTER_NAME="Prénom Nom" |
||
43 | GIT_AUTHOR_EMAIL=$GIT_COMMITTER_EMAIL |
||
44 | 3 | Geoffroy Desvernay | GIT_AUTHOR_NAME=$GIT_COMMITTER_NAME |
45 | 1 | Geoffroy Desvernay | export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME |
46 | </pre> |
||
47 | # Dans mon fichier ~/.ssh/config, j'ajoute: |
||
48 | <pre> |
||
49 | Host * |
||
50 | SendEnv LANG LC_* GIT_* |
||
51 | </pre> |
||
52 | # sur le serveur (celui qui a la clé de déploiement), il faut dans /etc/ssh/sshd_config: |
||
53 | <pre> |
||
54 | AcceptEnv GIT_* |
||
55 | </pre> |
||
56 | 2 | Geoffroy Desvernay | # Re-connectez-vous sur le serveur, et vérifiez que vos variables sont bien là: |
57 | <pre> |
||
58 | echo $SSH_AUTH_SOCK $GIT_COMMITTER_EMAIL |
||
59 | 1 | Geoffroy Desvernay | </pre> |
60 | 5 | Geoffroy Desvernay | |
61 | 6 | Geoffroy Desvernay | {{warning(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.)}} |
62 | 5 | Geoffroy Desvernay | |
63 | <pre> |
||
64 | ssh-with-git() { |
||
65 | (GIT_COMMITTER_EMAIL="julien.enselme@centrale-marseille.fr" |
||
66 | GIT_COMMITTER_NAME="Julien Enselme" |
||
67 | GIT_AUTHOR_EMAIL=$GIT_COMMITTER_EMAIL |
||
68 | GIT_AUTHOR_NAME=$GIT_COMMITTER_NAME |
||
69 | |||
70 | export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME |
||
71 | ssh $*) |
||
72 | }</pre> |