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.

10voto

Hugo Sohm Points 1441

Voici la solution que j'ai utilisée en m'inspirant de la réponse de sajib-khan . La configuration par défaut n'est pas définie ; c'est mon compte personnel sur GitLab et l'autre spécifié est le compte de ma société. Voici ce que j'ai fait :

Générer la clé SSH

ssh-keygen -t rsa -f ~/.ssh/company -C "name.surname@company.com"

Modifier la configuration SSH

nano ~/.ssh/config

    Host company.gitlab.com
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/company

Supprimer la ou les clés SSH mises en cache

ssh-add -D

Testez-le !

ssh -T git@company.gitlab.com

Bienvenue à GitLab, @hugo.sohm !

ssh -T git@gitlab.com

Bienvenue à GitLab, @HugoSohm !

Utilisez-le !

Compte de l'entreprise

git clone git@company.gitlab.com:group/project.git

Compte personnel/par défaut

git clone git@gitlab.com:username/project.git

Voici le fuente que j'ai utilisé.

7voto

Tuomas Pelkonen Points 5641

Utilisez ssh-agent pour vos clés.

8 votes

Pouvez-vous développer ?

3voto

Andrew Crowley Points 21

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

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

Cela vous permettra de vous connecter aux machines comme ceci

 ssh aws

3voto

GiorgosK Points 1172

Sur Ubuntu 18.04 (Castor bionique) il n'y a rien à faire.

Après avoir créé avec succès une deuxième clé SSH, le système essaiera de trouver une clé SSH correspondante pour chaque connexion.

Pour être clair, vous pouvez créer une nouvelle clé avec ces commandes :

# Generate key make sure you give it a new name (id_rsa_server2)
ssh-keygen

# Make sure ssh agent is running
eval `ssh-agent`

# Add the new key
ssh-add ~/.ssh/id_rsa_server2

# Get the public key to add it to a remote system for authentication
cat ~/.ssh/id_rsa_server2.pub

3voto

Rotemya Points 395

Pour ceux qui travaillent avec aws Je recommande vivement de travailler avec Connexion d'une instance EC2 .

Amazon EC2 Instance Connect offre un moyen simple et sécurisé de se connecter à vos instances en utilisant Secure Shell (SSH).

Avec EC2 Instance Connect, vous utilisez les politiques et principes de la gestion des identités et des accès (IAM) d'AWS pour contrôler l'accès SSH à vos instances, supprimant ainsi la nécessité de partager et de gérer les clés SSH.

Après avoir installé les paquets pertinents ( pip install ec2instanceconnectcli ou le clonage du repo directement) vous pouvez vous connecter très facilement à plusieurs instances EC2 en changeant simplement l'identifiant de l'instance :

enter image description here


Que se passe-t-il en coulisses ?

Lorsque vous vous connectez à une instance à l'aide de EC2 Instance Connect, l'API Instance Connect envoie une clé publique SSH à usage unique dans les métadonnées de l'instance où elle reste pendant 60 secondes. Une politique IAM attachée à votre utilisateur IAM autorise ce dernier à pousser la clé publique vers les métadonnées de l'instance.

Le démon SSH utilise AuthorizedKeysCommand et AuthorizedKeysCommandUser, qui sont configurés lors de l'installation d'Instance Connect, pour rechercher la clé publique dans les métadonnées de l'instance pour l'authentification, et vous connecte à l'instance.

(*) Amazon Linux 2 2.0.20190618 ou supérieur et Ubuntu 20.04 ou supérieur sont préconfigurés avec EC2 Instance Connect. Pour les autres distributions Linux prises en charge, vous devez configurer Instance Connect pour chaque instance qui prendra en charge l'utilisation d'Instance Connect. Il s'agit d'une exigence unique pour chaque instance.


Liens :

Configurer l'Instance EC2 Connect
Connectez-vous en utilisant EC2 Instance Connect
Sécuriser vos hôtes bastion avec Amazon EC2 Instance Connect


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