web-dev-qa-db-fra.com

Définition d'un chemin personnalisé pour la clé SSH privée git sur Linux

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?

31
ripper234

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
42
vhallac

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

46
Felipe Sabino

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.

11
Paŭlo Ebermann

Utiliser ssh-agent

ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone [email protected]:uname/test-git-repo.git'
4
TlmaK0

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

1
m79lkm