Как я добавляю Ключи SSH к authorized_keys файлу?

У меня есть сервер Ubuntu на Amazon EC2, который я использую для разработки, и сегодня я глупо очистил все из моего ~/.ssh/authorized_keys файл. К счастью у меня есть открытый SSH, таким образом, я все еще соединен и могу зафиксировать файл, но когда я пытаюсь отложить свой файл ключей, он не работает. Я все еще отклонил разрешение с сервера на моей локальной машине.

authorized_keys имеет полномочия 600. Я попытался добавить свой ключ SSH с ssh-rsa и оставить ssh-rsa. Я также пытался делать ключ SSH всей одной строкой, но это не работало также.

Есть ли что-то еще, что я должен сделать как перезагрузка файл некоторые как?

188
задан 4 June 2018 в 23:27

9 ответов

Вы никогда не должны сохранить файл с его содержанием, запускающимся с -----BEGIN RSA PRIVATE KEY----- на сервере, который является Вашим закрытым ключом. Вместо этого необходимо поместить открытый ключ в ~/.ssh/authorized_keys файл.

Этот открытый ключ имеет .pub расширение, когда сгенерировано с помощью ssh-keygen и его содержание начинается ssh-rsa AAAAB3. (Двоичный формат описан в ответах на этот вопрос).

Полномочия ~/.ssh на сервере должен быть 700. Файл ~/.ssh/authorized_keys (на сервере), как, предполагается, имеет режим 600. Полномочия (частного) ключа на клиентском должны быть 600.

Если закрытый ключ не был защищен с паролем, и Вы помещаете его на сервер, я рекомендую Вам генерировать новый:

ssh-keygen -t rsa

Можно пропустить это, если Вы полностью уверены, что никто не может восстановить удаленный закрытый ключ с сервера.

Если это не помогает, работает ssh с опциями для большего количества многословия:

ssh -vvv user@example.com

На стороне сервера можно рассмотреть /var/log/auth.log для деталей.

203
ответ дан 22 November 2019 в 22:46

Если у Вас есть основанная на входе в систему аутентификация, затем используют ssh-copy-id добавлять Ваши открытые ключи к удаленному серверу.

ssh-copy-id user@host
130
ответ дан 22 November 2019 в 22:46
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
38
ответ дан 22 November 2019 в 22:46

Альтернативный способ установить Ваш открытый ключ в удаленной машине authorized_keys:

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

Некоторые преимущества:

  • не требует ssh-copy-id быть установленным.

  • гарантии это mkdir работы прежде, чем попытаться добавить id_rsa.pub кому: authorized_keys.

177
ответ дан 22 November 2019 в 22:46

После сохранения открытого ключа необходимо сохранить закрытый ключ в каталог и файл на ПК. И в подлинном разделе ssh на шпаклевке необходимо указать на файл секретных ключей, что Вы экономили на своем рабочем столе. Это будет работать. Это работает на меня.

3
ответ дан 22 November 2019 в 22:46

Самый легкий путь состоит в том, чтобы скопировать и вставить...

Сначала просматривайте/копируйте содержание своего локального открытого ключа id_rsa.pub включая начало "ssh-rsa", пока это не заканчивается Вашим адресом электронной почты:

cat ~/.ssh/id_rsa.pub

Затем редактирование authorized_keys на сервере и контенте вставки Вашего буфера обмена ниже любых других ключей в том файле:

nano ~/.ssh/authorized_keys

И сохраните Ctl+O, выйдите из файла Ctl+X, выйдите из сессии SSH exit и попытайтесь войти в подтвердить, что это работало. Если это не попросило пароль, это работало.

16
ответ дан 22 November 2019 в 22:46

Я думал, что могу способствовать этому, так как это об экземплярах AWS конкретно, и все ответы только рассматривают проблему как проблему Linux, как будто это была часть аппаратных средств. Первая вещь, которую необходимо понять, состоит в том, что Вы никогда не должны, не рассматривать экземпляры EC2 как аппаратные средства. Это просто собирается создать больше работы для Вас, Рассматривают их как энергозависимых. Это - самое большое препятствие, которое я вижу, что люди имеют с AWS. Сделайте AMI своего экземпляра и введите ключ, в котором Вы нуждаетесь в новый экземпляр. облако-init будет заботиться о нем для Вас. Более подробно все, что необходимо сделать, использовать правильный открытый ключ при создании нового экземпляра из AMI оригинала. Если, как в комментариях утвержденного ответа Вы хотите генерировать свою собственную пару ключей паба и pem файлов, AWS предоставляет Вам опцию загрузить Ваши открытые ключи для использования в EC2.

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

5
ответ дан 22 November 2019 в 22:46

Получите оболочку на удаленной машине, где Вы хотите поместить ключ, и затем можно выполнить эту остроту, чтобы создать необходимые файлы и каталоги, установить их полномочия и добавить ключ к файлу. Конечно, необходимо измениться KEYGOESHERE часть ниже и комментарий после него.

mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE user@remotehost or note" >> ~/.ssh/authorized_keys
4
ответ дан 22 November 2019 в 22:46

Вот изменение, посредством чего у Вас мог бы быть список имен файлов с открытым ключом в текстовом файле, и большой пакет файлов с открытым ключом находятся также в том же каталоге.

Это изменение может быть полезным при предоставлении огромного списка файлов с открытым ключом для импорта :-)

$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done
1
ответ дан 22 November 2019 в 22:46

Другие вопросы по тегам:

Похожие вопросы: