J'ai un serveur Ubuntu sur Amazon EC2, que j'utilise pour le développement, et aujourd'hui, j'ai tout bêtement vidé de mon ~/.ssh/authorized_keys
fichier. Heureusement, un SSH est ouvert. Je suis donc toujours connecté et je peux réparer le fichier, mais lorsque j'essaie de remettre mon fichier de clé, il ne fonctionne pas. J'ai toujours l'autorisation refusée 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 ssh-rsa désactivé. J'ai également essayé de créer une 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?
data-recovery
ssh
amazon-ec2
Dave Long
la source
la source
Réponses:
Vous ne devez jamais enregistrer le fichier avec son contenu commençant par
-----BEGIN RSA PRIVATE KEY-----
sur le serveur, c’est votre clé privée . Au lieu de cela, vous devez placer la clé publique dans le~/.ssh/authorized_keys
fichier.Cette clé publique a l'
.pub
extension lorsqu'elle est générée avecssh-keygen
et son contenu commence parssh-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 supposé avoir un mode de 600. Les autorisations de la clé (privée) côté client doivent être de 600.Si la clé privée n'est 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:
Vous pouvez ignorer ceci si vous êtes absolument certain que personne ne pourra récupérer la clé privée supprimée du serveur.
Si cela ne vous aide pas, lancez
ssh
des options pour plus de verbosité:Du côté du serveur, vous pouvez consulter
/var/log/auth.log
pour plus de détails.la source
ssh-keygen -t rsa
et placer leid_rsa.pub
fichier nouvellement créé~/.ssh/authorized_keys
sur votre serveur. Voir aussi docs.amazonwebservices.com/AWSEC2/latest/UserGuide/…ssh-keygen -y -f key.pem > key.pub
Une autre façon d’installer votre clé publique dans la machine distante
authorized_keys
:Quelques avantages:
ne nécessite pas
ssh-copy-id
d'être installé.garanties qui
mkdir
fonctionne avant d'essayer d'ajouterid_rsa.pub
àauthorized_keys
.la source
mkdir -p ~/.ssh
partie de la réponse donnée par @MariusButuc enumask 077 && mkdir -p ~/.ssh
est tout ce que vous devez faire pour vous assurer qu'il fonctionnera correctement.Si vous avez une authentification basée sur la connexion, utilisez-la
ssh-copy-id
pour ajouter vos clés publiques au serveur distant.la source
brew install ssh-copy-id
sudo port install openssh +ssh_copy_id
. Le+ssh_copy_id
installs openssh avec la variante ssh_copy_id.la source
Le moyen le plus simple est de copier et coller ...
Commencez par afficher / copier 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 électronique:Puis éditez
authorized_keys
sur le serveur et collez le contenu de votre presse-papiers au-dessous des autres clés de ce fichier:Et enregistrez
Ctl+O
, quittez le fichierCtl+X
, quittez la session SSHexit
et essayez de vous reconnecter pour confirmer que cela a fonctionné. Si cela ne demandait pas de mot de passe, cela fonctionnait.la source
Je pensais pouvoir y contribuer, car il s'agissait d'instances AWS en particulier et toutes les réponses traitaient simplement le problème comme 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, jamais, traiter les instances EC2 comme du matériel. Cela ne fera que créer plus de travail pour vous. Traitez-les comme volatiles. C'est le plus gros obstacle que je vois avec les gens 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 occupera pour vous. De manière plus détaillée, il vous 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 clés de fichiers pub et pem, AWS vous offre la possibilité de télécharger vos clés publiques pour les utiliser 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
la source
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.
la source
Procurez-vous un shell sur la machine distante sur laquelle vous souhaitez placer la clé, puis exécutez ce one-liner pour créer les fichiers et les répertoires nécessaires, définir leurs autorisations et ajouter la clé au fichier. Bien sûr, vous devez changer la
KEYGOESHERE
partie ci-dessous et le commentaire qui suit.la source
Voici une variante dans 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 trouvant également dans le même répertoire.
Cette variation peut être utile si vous donniez une liste énorme de fichiers de clé publique à importer :-)
la source