1609 votes

Spécifier un SSH-clé privée à utiliser lors de l’exécution de commande shell avec ou sans Ruby ?

Une situation plutôt inhabituelle peut-être, mais je tiens à préciser une SSH-clé privée à utiliser lors de l’exécution d’une commande shell (git) de l’ordinateur local.

Fondamentalement, comme ceci :``

Ou mieux encore (en Ruby) :

J’ai vu des exemples de connexion à un serveur distant avec Net::SSH qui utilise une clé privée spécifiée, mais il s’agit d’une commande locale. Est-ce possible ?

Merci

1540voto

HeyWatchThis Points 2221

Aucune de ces solutions n'a fonctionné pour moi.

Au lieu de cela, j'ai élaboré sur @Martin v. Löwis 's mention de l'établissement d'un config le fichier par SSH.

SSH va chercher de l'utilisateur ~/.ssh/config le fichier. J'ai la mienne d'installation:

Host            gitserv
    Hostname        remote.server.com
    IdentityFile    ~/.ssh/id_rsa.github
    IdentitiesOnly yes # see NOTES below

Et j'ajoute un dépôt git distant:

git remote add origin git@gitserv:myrepo.git

Et puis git commandes fonctionnent normalement pour moi.

git push -v origin master

NOTES

  • L' IdentitiesOnly yes est nécessaire pour prévenir le SSH comportement par défaut de l'envoi de la fiche d'identité correspondant au nom de fichier par défaut pour chaque protocole. Si vous avez un fichier nommé ~/.ssh/id_rsa qui vous permettra d'obtenir essayé AVANT votre ~/.ssh/id_rsa.github sans cette option.

Références

1074voto

Martin v. Löwis Points 61768

Quelque chose comme ceci devrait fonctionner:

ssh-agent (ssh-add /home/christoffer/ssh_keys/theuser; git clone git@github.com:TheUser/TheProject.git)

ou comme l'a suggéré orip:

ssh-agent bash -c 'ssh-add /home/christoffer/ssh_keys/theuser; git clone git@github.com:TheUser/TheProject.git'

git va lancer ssh qui va trouver son agent par la variable d'environnement; ce sera, à son tour, la clé chargé.

Sinon, la configuration de la MAISON peuvent également faire l'affaire, à condition que vous êtes prêt pour la configuration d'un répertoire qui ne contient qu'une .ssh répertoire de la MAISON, ce qui peut contenir soit une identité.pub, ou un fichier de configuration paramètre IdentityFile.

496voto

philfreo Points 12382

Suggestions d’autrui sur `` sont très compliquées. Il peut être aussi simple que :

162voto

Joe Block Points 479

Contenu de my_git_ssh_wrapper :

Ensuite, vous pouvez utiliser la clé en faisant :

31voto

Jamie Points 279

Je suis allé avec la variable d’environnement GIT_SSH. Voici mon wrapper, semblable à qu’à partir de Joe Block d’en haut, mais gère une quantité quelconque d’arguments.

Fichier ~/gitwrap.sh

Ensuite, dans mon .bashrc, ajoutez ce qui suit :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X