Question Meilleure façon d'utiliser plusieurs clés privées SSH sur un 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 dans le même serveur). J'ai essayé simplement d'empiler les clés dans le id_rsa fichiers en vain.

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

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

C'est assez lourd.

Des suggestions sur la façon de s'y prendre un peu plus facilement?


667
2018-03-10 18:40


origine


Réponses:


De mon .ssh/config:

Host myshortname realname.example.com
    HostName realname.example.com
    IdentityFile ~/.ssh/realname_rsa # private key for realname
    User remoteusername

Host myother realname2.example.org
    HostName realname2.example.org
    IdentityFile ~/.ssh/realname2_rsa
    User remoteusername

Etc.


960
2018-03-10 18:46



le réponse de Randal Schwartz m'a presque aidé tout le chemin. J'ai un nom d'utilisateur différent sur le serveur, donc j'ai dû ajouter Utilisateur mot-clé à mon fichier:

Host           friendly-name
HostName       long.and.cumbersome.server.name
IdentityFile   ~/.ssh/private_ssh_file
User           username-on-remote-machine

Maintenant, vous pouvez vous connecter en utilisant le nom convivial:

ssh friendly-name

Plus de mots-clés peuvent être trouvés sur le Page de manuel OpenSSH. REMARQUE: Certains des mots clés répertoriés sont peut-être déjà présents dans votre / etc / ssh / ssh_config fichier.


226
2017-09-30 07:37



Vous pouvez demander à ssh d'essayer successivement plusieurs clés lors de la connexion. Voici comment:

$ cat ~/.ssh/config
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa_old
IdentityFile ~/.ssh/id_ed25519
# ... and so on

$ ssh server.example.com -v
....
debug1: Next authentication method: publickey
debug1: Trying private key: /home/example/.ssh/id_rsa
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/example/.ssh/id_rsa_old
debug1: read PEM private key done: type RSA
....
[server ~]$

De cette façon, vous n'avez pas à spécifier quelle touche fonctionne avec quel serveur. Il va juste utiliser la première clé de travail.

De même, vous ne saisissez une phrase secrète que si un serveur donné accepte la clé. Comme vu ci-dessus ssh n'a pas essayé de demander un mot de passe pour .ssh/id_rsa même s'il en avait un.

Certes, il ne surpasse pas une configuration par serveur comme dans les autres réponses, mais au moins vous n'aurez pas à ajouter de configuration pour tous les serveurs auxquels vous vous connectez!


167
2017-10-20 04:56



foo:~$ssh-add ~/.ssh/xxx_id_rsa

Assurez-vous de le tester avant de l'ajouter avec:

ssh -i ~/.ssh/xxx_id_rsa username@example.com

Si vous avez des problèmes avec des erreurs, changer la sécurité du fichier aide parfois:

chmod 0600 ~/.ssh/xxx_id_rsa

89
2017-08-15 05:31



Les réponses précédentes ont correctement expliqué la manière de créer un fichier de configuration pour gérer plusieurs clés ssh. Je pense que la chose importante qui doit également être expliquée est la remplacement d'un nom d'hôte par un nom d'alias lors du clonage du référentiel.

Supposons que votre nom d'utilisateur du compte GitHub de la société est abc1234. Et supposez que votre Le nom d'utilisateur personnel du compte GitHub est jack1234

Et, supposons que vous avez créé deux clés RSA, à savoir id_rsa_company et id_rsa_personal. Alors, votre configuration le fichier ressemblera à ci-dessous:

# Company account
Host company
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company

# Personal account
Host personal
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal

Maintenant, quand vous clonez le dépôt  (démo nommée) À partir du compte GitHub de la société, l'URL du référentiel sera quelque chose comme:

Repo URL: git@github.com:abc1234/demo.git

Maintenant, en faisant git clone, vous devez modifier l'URL du référentiel ci-dessus comme suit:

git@company:abc1234/demo.git

Notez comment github.com est maintenant remplacé par l'alias "company" comme nous l'avons défini dans le fichier de configuration.

De même, vous devez modifier l'URL clone du référentiel dans le compte personnel en fonction de l'alias fourni dans le fichier de configuration.


37
2017-07-19 09:06



Je suis d'accord avec Tuomas sur l'utilisation de ssh-agent. Je voulais également ajouter une deuxième clé privée pour le travail et ce tutoriel A fonctionné à merveille pour moi.

Les étapes sont comme ci-dessous:

  1. $ ssh-agent bash
  2. $ ssh-add /path.to/private/key par exemple ssh-add ~/.ssh/id_rsa
  3. Vérifier par $ ssh-add -l
  4. Testez avec $ssh -v <host url> par exemple ssh -v git@assembla.com

20
2017-10-21 09:30



  1. Générer une clé SSH:

    $ ssh-keygen -t rsa -C <email1@example.com>
    
  2. produire another SSH key:

    $ ssh-keygen -t rsa -f ~/.ssh/accountB -C <email2@example.com>
    

    Maintenant, deux clés publiques (id_rsa.pub, accountB.pub) devrait exister dans le ~/.ssh/ annuaire.

    $ ls -l ~/.ssh     # see the files of '~/.ssh/' directory 
    
  3. Créer un fichier de configuration ~/.ssh/config avec le contenu suivant:

    $ nano ~/.ssh/config
    
    Host bitbucket.org  
        User git  
        Hostname bitbucket.org
        PreferredAuthentications publickey  
        IdentityFile ~/.ssh/id_rsa  
    
    Host bitbucket-accountB  
        User git  
        Hostname bitbucket.org  
        PreferredAuthentications publickey  
        IdentitiesOnly yes  
        IdentityFile ~/.ssh/accountB  
    
  4. Clone de default Compte.

    $ git clone git@bitbucket.org:username/project.git
    
  5. Clone de accountB Compte.

    $ git clone git@bitbucket-accountB:username/project.git
    

Voir plus ici


14
2017-12-14 05:39



Utilisez ssh-agent pour vos clés.


9
2018-03-10 18:44



J'avais déjà rencontré ce problème il y a quelque temps, quand j'avais deux comptes Bitbucket et que je voulais stocker des clés SSH séparées pour les deux. C'est ce qui a fonctionné pour moi.

J'ai créé deux configurations SSH distinctes comme suit.

Host personal.bitbucket.org
    HostName bitbucket.org
    User git
    IdentityFile /Users/username/.ssh/personal
Host work.bitbucket.org
    HostName bitbucket.org
    User git
    IdentityFile /Users/username/.ssh/work

Maintenant, quand je devais cloner un dépôt de mon compte de travail - la commande était la suivante.

git clone git@bitbucket.org:teamname/project.git

J'ai dû modifier cette commande pour:

git clone git@**work**.bitbucket.org:teamname/project.git

De même, la commande clone de mon compte personnel a dû être modifiée pour

git clone git @personnel.bitbucket.org: nom / personalproject.git

Référer ce lien pour plus d'informations.


7
2017-09-02 06:58



Vous pouvez créer un fichier de configuration nommé config dans ton ~/.ssh dossier. Il peut contenir:

Host aws
    HostName *yourip*
    User *youruser*
    IdentityFile *idFile*

Cela vous permettra de vous connecter à des machines comme celle-ci

 ssh aws

1
2018-01-18 00:27