J'essaie de configurer un client git sur linux. J'ai téléchargé ma clé privée sur la machine et je comprends que je devrais la mettre dans ~/.ssh, mais je n'ai pas accès à ce dossier.
Comment puis-je dire à git de chercher la clé privée ailleurs?
Une option consiste à utiliser ssh-agent
et donnez un nom de fichier à ssh-add
.
Par exemple:
$ ssh-agent /bin/bash
$ ssh-add ~/mykeys/id_rsa
Vous pouvez y parvenir en utilisant un fichier de configuration ssh .
Créez d'abord un fichier dans votre ~/.ssh
dossier nommé config
, vous pouvez utiliser une commande comme celle-ci
$ nano ~/.ssh/config
Ensuite, le contenu du fichier doit avoir l'emplacement de votre clé en fonction de chaque nom d'hôte. par exemple:
Host github.com
IdentityFile ~/myPublicKeyFolder/myGitHubFile
Host heroku.com
IdentityFile ~/myPublicKeyFolder/myHerokuFile
Ainsi, lorsque git essaie d'accéder à chaque hôte, il suivra les règles à l'intérieur de ce fichier de configuration en fonction de l'hôte git que vous essayez d'atteindre
J'aurais dit mettre le nom du fichier dans ~/.ssh/config
, mais vous n'auriez probablement pas accès à ce fichier également.
Vous pouvez donner à ssh
la clé privée à utiliser avec le -i keyfile
option.
Maintenant, comment dire git quelles options passer à ssh?
La page GitTips dit de créer un script wrapper et pointez-le avec le GIT_SSH
variable d'environnement.
Il semble que vous pouvez également utiliser la configuration git core.gitProxy
, mais je n'ai pas trouvé un bon exemple et n message de liste de diffusion suggère que ce n'est que pour le git:
protocole.
Utiliser ssh-agent
ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone [email protected]:uname/test-git-repo.git'
Pour un projet sur lequel je travaille, mon application doit cracher un script Shell avec toutes les commandes git pour init/commit/Push vers un référentiel externe. Le ~/.ssh/config est hors limites, j'ai donc mes clés publiques/privées dans mon répertoire d'application. J'ai utilisé la réponse de vhallac. Voici ce que je devais faire dans mon script Shell pour utiliser ma clé:
eval `/usr/bin/ssh-agent`
ssh-add /path/to/.ssh/id_rsa
j'espère que cela aide quelqu'un