1184 votes

Meilleure façon d'utiliser plusieurs clés privées SSH sur un même client

Je veux utiliser plusieurs clés privées pour me connecter à différents serveurs ou à différentes parties du même serveur (mes utilisations sont l'administration système du serveur, l'administration de Git et l'utilisation normale de Git au sein du même serveur). J'ai essayé de simplement empiler les clés dans le répertoire id_rsa en vain.

Apparemment, un moyen simple de le faire est d'utiliser la commande

ssh -i <key location> login@server.example.com 

C'est assez encombrant.

Avez-vous des suggestions sur la façon de procéder pour faciliter les choses ?

8 votes

J'ai écrit cet article qui traite en profondeur des différentes configurations et de leurs avantages et inconvénients.

2voto

dgbt Points 201

Comme mentionné sur une page du blog d'Atlassian , générer un config à l'intérieur du fichier .ssh en incluant le texte suivant :

#user1 account
 Host bitbucket.org-user1
     HostName bitbucket.org
     User git
     IdentityFile ~/.ssh/user1
     IdentitiesOnly yes

 #user2 account
 Host bitbucket.org-user2
     HostName bitbucket.org
     User git
     IdentityFile ~/.ssh/user2
     IdentitiesOnly yes

Ensuite, vous pouvez simplement effectuer un checkout avec le domaine suffixe et dans les projets, vous pouvez configurer les noms d'auteurs, etc. localement.

2voto

Chris Points 46

Paires de clés multiples sur GitHub

1.0 Fichier de configuration SSH

1.1 Créer ~/.ssh/config

1.2 chmod 600 ~/.ssh/config ( doit )

1.3 Saisissez les éléments suivants dans le fichier :

Pizza de l'hôte

Nom d'hôte github.com

PreferredAuthentications publickey # facultatif

IdentityFile ~/.ssh/privatekey1

Cas A : Nouveau clone Git

Utilisez cette commande pour cloner Git :

$ git clone git@pizza:yourgitusername/pizzahut_repo.git

Note : Si vous voulez changer le nom d'hôte "pizza" de .ssh/config dans le futur, allez dans le dossier cloné de Git, éditez la ligne URL du fichier .git/config (voir cas B).

Cas B : Déjà un dossier de clone Git

2.1 Allez dans le dossier cloné, puis allez dans l'onglet .git dossier

2.2 Modifier le fichier de configuration

2.3 Mettre à jour l'URL de *ancien à nouveau :

(Old) URL = git@github.com:yourgitusername/pizzahut_repo.git

(New) URL = git@pizza:yourgitusername/pizzahut_repo.git

1voto

danday74 Points 15895

IMPORTANT : Vous devez démarrer ssh-agent

Vous devez démarrer ssh-agent (s'il n'est pas déjà en cours d'exécution) avant d'utiliser ssh-add comme suit :

eval `ssh-agent -s` # start the agent

ssh-add id_rsa_2 # Where id_rsa_2 is your new private key file

Notez que la commande eval démarre l'agent sur Git Bash sur Windows. D'autres environnements peuvent utiliser une variante pour démarrer l'agent SSH.

1voto

blackjacx Points 154

J'aime l'approche consistant à définir les éléments suivants dans le fichier ~/.ssh/config :

# Configuration for GitHub to support multiple GitHub  keys
Host  github.com
  HostName github.com
  User git

# UseKeychain adds each keys passphrase to the keychain so you
# don't have to enter the passphrase each time.
  UseKeychain yes

# AddKeysToAgent would add the key to the agent whenever it is
# used, which might lead to debugging confusion since then
# sometimes the one repository works and sometimes the
# other depending on which key is used first.
#  AddKeysToAgent yes

# I only use my private id file so all private
# repositories don't need the environment variable
# `GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa"` to be set.
  IdentityFile ~/.ssh/id_rsa

Ensuite, dans votre référentiel, vous pouvez créer un fichier .env qui contient le fichier ssh à utiliser :

GIT_SSH_COMMAND="ssh -i ~/.ssh/your_ssh_key"

Si vous utilisez ensuite par exemple dotenv la variable d'environnement est exportée automatiquement et whoop whoop, vous pouvez spécifier la clé que vous voulez par projet/répertoire. La phrase de passe n'est demandée qu'une seule fois puisqu'elle est ajoutée au trousseau de clés.

Cette solution fonctionne parfaitement avec Git et est conçue pour fonctionner sur un Mac (en raison de UseKeychain ).

0voto

Chris Owens Points 557

Sur CentOS 6.5 exécutant OpenSSH_5.3p1 et OpenSSL 1.0.1e-fips, j'ai résolu le problème en renommant mes fichiers de clés afin qu'aucun d'entre eux n'ait le nom par défaut.

Mon répertoire .ssh contient id_rsa_foo et id_rsa_bar, mais pas id_rsa, etc.

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