Comment ajouter des clés SSH au fichier authorized_keys?

144

J'ai un serveur Ubuntu sur Amazon EC2, que j'utilise pour le développement, et aujourd'hui, j'ai tout effacé de mon fichier ~/.ssh/authorized_keys . Heureusement, j'ai un SSH ouvert, donc je suis toujours connecté, et je peux réparer le fichier, mais quand j'essaye de remettre mon fichier de clé, cela ne fonctionne pas. Je reçois toujours l'autorisation du serveur sur ma machine locale.

authorized_keys a les permissions 600. J'ai essayé d'ajouter ma clé SSH avec ssh-rsa et de laisser le ssh-rsa désactivé. J'ai également essayé de faire de la clé SSH une seule ligne, mais cela n'a pas fonctionné non plus.

Y a-t-il autre chose que je dois faire pour recharger le fichier?

    
posée Dave Long 01.06.2011 - 18:02
la source

9 réponses

167

Vous devez ne jamais enregistrer le fichier avec son contenu en commençant par -----BEGIN RSA PRIVATE KEY----- sur le serveur, c'est-à-dire votre clé privée . Au lieu de cela, vous devez placer la clé publique dans le fichier ~/.ssh/authorized_keys .

Cette clé publique possède l’extension .pub lorsqu’elle est générée à l’aide de ssh-keygen et que son contenu commence par ssh-rsa AAAAB3 . (Le format binaire est décrit dans les réponses à cette question ).

Les autorisations de ~/.ssh sur le serveur doivent être 700. Le fichier ~/.ssh/authorized_keys (sur le serveur) est censé avoir le mode 600. Les autorisations de la clé (privée) du côté client doivent être 600.

Si la clé privée n’était pas protégée par un mot de passe, et que vous la mettez sur le serveur, je vous recommande de en générer un nouveau:

ssh-keygen -t rsa

Vous pouvez sauter ceci si vous êtes sûr que personne ne peut récupérer la clé privée supprimée du serveur.

Si cela n’aide pas, exécutez ssh avec des options pour plus de verbosité:

ssh -vvv [email protected]

Côté serveur, vous pouvez consulter /var/log/auth.log pour plus de détails.

    
réponse donnée Lekensteyn 01.06.2011 - 18:29
la source
144

Une autre manière d’installer votre clé publique dans authorized_keys :

de la machine distante
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Quelques avantages:

  • ne nécessite pas l’installation de ssh-copy-id .

  • garantit que mkdir fonctionne avant d'essayer d'ajouter id_rsa.pub à authorized_keys .

réponse donnée Marius Butuc 27.02.2013 - 20:31
la source
114

Si vous avez une authentification basée sur la connexion, utilisez ssh-copy-id pour ajouter vos clés publiques à serveur distant.

ssh-copy-id [email protected]
    
réponse donnée Shoaib Nawaz 01.06.2011 - 18:32
la source
32
local> scp .ssh/id_dsa.pub remote.com:
local> ssh remote.com
remote> cat id_dsa.pub >> .ssh/authorized_keys
remote> rm id_dsa.pub
remote> exit
    
réponse donnée jjg 01.06.2011 - 20:23
la source
6

Le plus simple est de copier et coller ...

Commencez par afficher / copier le contenu de votre clé publique locale id_rsa.pub incluant le début "ssh-rsa" jusqu'à ce qu'il se termine par votre adresse e-mail:

cat ~/.ssh/id_rsa.pub

Ensuite, éditez authorized_keys sur le serveur et collez le contenu de votre presse-papiers sous les autres clés de ce fichier:

nano ~/.ssh/authorized_keys

Enregistrez Ctl+O , quittez le fichier Ctl+X , quittez la session SSH exit et essayez de vous reconnecter pour confirmer que cela fonctionne. S'il n'a pas demandé un mot de passe, cela a fonctionné.

    
réponse donnée ow3n 07.09.2015 - 20:42
la source
3

Après avoir enregistré la clé publique, vous devez enregistrer la clé privée dans un répertoire et un fichier sur votre ordinateur. Et dans la section auth de ssh on putty, vous devez pointer sur le fichier de clé privée que vous avez enregistré sur votre bureau. Ça va marcher. Ça marche pour moi.

    
réponse donnée user273266 23.04.2014 - 21:59
la source
3

Je pensais pouvoir y contribuer car il s’agissait d’instances AWS et toutes les réponses traitaient le problème comme un problème Linux, comme s’il s’agissait d’un élément matériel. La première chose que vous devez comprendre, c'est que vous ne devez jamais traiter les instances EC2 comme du matériel. Cela va juste créer plus de travail pour vous Traitez-les comme volatiles. C'est le plus grand obstacle que je vois chez les personnes avec AWS. Créez une AMI de votre instance et injectez la clé dont vous avez besoin dans la nouvelle instance. cloud-init s'en chargera pour vous. Plus précisément, il suffit d'utiliser la clé publique correcte lors de la création de la nouvelle instance à partir de l'AMI de l'original. Si, comme dans les commentaires de la réponse approuvée, vous souhaitez générer votre propre paire de fichiers pub et pem, AWS vous permet de télécharger vos clés publiques pour une utilisation dans EC2.

lien

    
réponse donnée einarc 03.03.2016 - 02:22
la source
1

Obtenez un shell sur la machine distante sur laquelle vous voulez placer la clé, puis vous pouvez exécuter ce one-liner pour créer les fichiers et répertoires nécessaires, définir leurs autorisations et ajouter la clé au fichier. Bien sûr, vous devez changer la partie KEYGOESHERE ci-dessous et le commentaire qui suit.

mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE [email protected] or note" >> ~/.ssh/authorized_keys
    
réponse donnée Sarel Botha 07.12.2016 - 21:33
la source
1

Voici une variante selon laquelle vous pourriez avoir une liste de noms de fichiers de clé publique dans un fichier texte et le gros lot de fichiers de clé publique se trouve également dans le même répertoire.

Cette variante peut être utile si vous donniez une énorme liste de fichiers de clés publiques à importer: -)

$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh [email protected] "cat >> ~/.ssh/authorized_keys"; done
    
réponse donnée jlmontes 23.08.2016 - 19:32
la source

Lire d'autres questions sur les étiquettes