Question Comment ajouter des clés SSH au fichier authorized_keys?


J'ai un serveur Ubuntu sur Amazon EC2, que j'utilise pour le développement, et aujourd'hui, j'ai tout effacé de mon ~/.ssh/authorized_keys fichier. 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é, ça ne marche pas. Je reçois toujours l'autorisation du serveur sur ma machine locale.

authorized_keys a les autorisations 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 rendre la clé SSH sur une seule ligne, mais cela n'a pas fonctionné non plus.

Y a-t-il autre chose que je dois faire, comme recharger le fichier, comment?


147
2018-06-01 16:02


origine


Des années plus tard, cela semble toujours pertinent et actif; je voulais seulement faire une observation, parler d'avoir évité une balle: "Heureusement, j'ai un SSH ouvert, alors je suis toujours connecté [..]" - sheesh! ; dP - Nostromov
Ce post, qui a été édité lors de mon anniversaire, m'a sauvé il y a deux mois, lors de mon anniversaire. - ytpillai


Réponses:


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

Ce Publique la clé a le .pub extension lorsqu'il est généré en utilisant ssh-keygen et son contenu commence par ssh-rsa AAAAB3. (Le format binaire est décrit dans les réponses à cette question).

Les permissions de ~/.ssh sur le serveur devrait être 700. Le fichier ~/.ssh/authorized_keys (sur le serveur) est censé avoir un mode de 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 d'en générer un nouveau:

ssh-keygen -t rsa

Vous pouvez ignorer cela si vous êtes certain que personne ne peut récupérer la clé privée supprimée à partir du serveur.

Si cela n'aide pas, lancez ssh avec des options pour plus de verbosité:

ssh -vvv user@example.com

Du côté du serveur, vous pouvez revoir /var/log/auth.log pour plus de détails.


170
2018-06-01 16:29



Avec les serveurs Amazon EC2, je ne dispose que de la clé privée (key.pem). Je n'ai pas de clé publique nulle part. - Dave Long
@Dave Long: Vous devez générer une nouvelle clé en utilisant ssh-keygen -t rsa et mettre le nouveau créé id_rsa.pub déposer dans ~/.ssh/authorized_keys sur votre serveur. Voir également docs.amazonwebservices.com/AWSEC2/latest/UserGuide/… - Lekensteyn
@DaveLong: Vous pouvez générer la clé publique à partir de la clé privée à tout moment. Vous pouvez le faire simplement avec la commande suivante: ssh-keygen -y -f key.pem > key.pub - Morgan Blackthorne
@MorganBlackthorne Bien que ce soit vrai, je vous recommande de générer vos clés privées plutôt que d'en accepter une de sources distantes. Vous ne pouvez pas être sûr que la clé privée n'a pas été divulguée. - Lekensteyn
@Gerrat Fixed². - Lekensteyn


Une autre manière d’installer votre clé publique sur la machine distante authorized_keys:

cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Quelques avantages:

  • ne nécessite pas ssh-copy-id étre installé.

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


147
2018-02-27 19:31



Votre réponse m'a aidé à le faire sur plusieurs machines distantes sans paquets supplémentaires, merci. - nol
Cela ne garantit pas que le répertoire "~ / .ssh" et le fichier "~ / .ssh / authorized_keys" seront créés avec les autorisations appropriées. - Nick
@Nick, j'ai eu ce problème. Alors peut-être faut-il vraiment vérifier d'abord leur existence, s'il manque, créer correctement avec chmod (700 / folder, 600 / file), et alors seulement ajouter? alors peut-être que ça ne peut pas être un seul paquebot? - AnneTheAgile
@AnneTheAgile je pense changer le mkdir -p ~/.ssh partie de la réponse donnée par @MariusButuc à umask 077 && mkdir -p ~/.ssh est tout ce que vous devez faire pour vous assurer qu’elle fonctionnera correctement. - Nick
ty @Nick! Je testerai. - AnneTheAgile


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

ssh-copy-id user@host

115
2018-06-01 16:32



Cela ne semble pas être une commande valide sur Mac, ce que ma machine client est. - Dave Long
Peut être utile phildawson.tumblr.com/post/484798267/ssh-copy-id-in-mac-os-x - Shoaib Nawaz
sur OSX, vous pouvez installer avec brew: brew install ssh-copy-id - phil
Sur Macports, cette commande peut être installée en utilisant sudo port install openssh +ssh_copy_id. le +ssh_copy_id installe openssh avec la variante ssh_copy_id. - Stefan Lasiewski
Notez que les instructions sur phildawson.tumblr.com vous demandent d'installer un logiciel non fiable, en tant que root. C'est assez dangereux et un bon moyen de se faire pirater, à moins que vous ne sachiez que vous pouvez faire confiance à l'auteur. - Stefan Lasiewski


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

32
2018-06-01 18:23





Le moyen le plus simple est de copier et coller ...

D'abord, affichez / copiez le contenu de votre clé publique locale id_rsa.pub y compris le début "ssh-rsa" jusqu'à ce qu'il se termine par votre adresse email:

cat ~/.ssh/id_rsa.pub

Puis é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

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


7
2017-09-07 18:42





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 vers le fichier de clé privée que vous avez enregistré sur votre bureau. Ça va marcher. Ça marche pour moi.


3
2018-04-23 19:59



Je voudrais juste que la console de Windows puisse avoir toute la fonctionnalité de ssh ajoutée dans son interpréteur - Dennis


Je pensais pouvoir y contribuer car il s'agissait spécifiquement d'instances AWS et toutes les réponses traitent le problème uniquement sous la forme d'un problème Linux, comme s'il s'agissait d'un élément matériel. La première chose à comprendre 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 gros obstacle que je rencontre chez 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.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#how-to-generate-your-own-key-and-import-it-to-aws


3
2018-03-03 01:22