У меня есть сервер Ubuntu на Amazon EC2, который я использую для разработки, и сегодня я глупо очистил все из моего ~/.ssh/authorized_keys
файл. К счастью у меня есть открытый SSH, таким образом, я все еще соединен и могу зафиксировать файл, но когда я пытаюсь отложить свой файл ключей, он не работает. Я все еще отклонил разрешение с сервера на моей локальной машине.
authorized_keys
имеет полномочия 600. Я попытался добавить свой ключ SSH с ssh-rsa и оставить ssh-rsa. Я также пытался делать ключ SSH всей одной строкой, но это не работало также.
Есть ли что-то еще, что я должен сделать как перезагрузка файл некоторые как?
Вы никогда не должны сохранить файл с его содержанием, запускающимся с -----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
для деталей.
Если у Вас есть основанная на входе в систему аутентификация, затем используют ssh-copy-id
добавлять Ваши открытые ключи к удаленному серверу.
ssh-copy-id user@host
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
Альтернативный способ установить Ваш открытый ключ в удаленной машине 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
.
После сохранения открытого ключа необходимо сохранить закрытый ключ в каталог и файл на ПК. И в подлинном разделе ssh на шпаклевке необходимо указать на файл секретных ключей, что Вы экономили на своем рабочем столе. Это будет работать. Это работает на меня.
Самый легкий путь состоит в том, чтобы скопировать и вставить...
Сначала просматривайте/копируйте содержание своего локального открытого ключа id_rsa.pub
включая начало "ssh-rsa", пока это не заканчивается Вашим адресом электронной почты:
cat ~/.ssh/id_rsa.pub
Затем редактирование authorized_keys
на сервере и контенте вставки Вашего буфера обмена ниже любых других ключей в том файле:
nano ~/.ssh/authorized_keys
И сохраните Ctl+O
, выйдите из файла Ctl+X
, выйдите из сессии SSH exit
и попытайтесь войти в подтвердить, что это работало. Если это не попросило пароль, это работало.
Я думал, что могу способствовать этому, так как это об экземплярах AWS конкретно, и все ответы только рассматривают проблему как проблему Linux, как будто это была часть аппаратных средств. Первая вещь, которую необходимо понять, состоит в том, что Вы никогда не должны, не рассматривать экземпляры EC2 как аппаратные средства. Это просто собирается создать больше работы для Вас, Рассматривают их как энергозависимых. Это - самое большое препятствие, которое я вижу, что люди имеют с AWS. Сделайте AMI своего экземпляра и введите ключ, в котором Вы нуждаетесь в новый экземпляр. облако-init будет заботиться о нем для Вас. Более подробно все, что необходимо сделать, использовать правильный открытый ключ при создании нового экземпляра из AMI оригинала. Если, как в комментариях утвержденного ответа Вы хотите генерировать свою собственную пару ключей паба и pem файлов, AWS предоставляет Вам опцию загрузить Ваши открытые ключи для использования в EC2.
Получите оболочку на удаленной машине, где Вы хотите поместить ключ, и затем можно выполнить эту остроту, чтобы создать необходимые файлы и каталоги, установить их полномочия и добавить ключ к файлу. Конечно, необходимо измениться 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
Вот изменение, посредством чего у Вас мог бы быть список имен файлов с открытым ключом в текстовом файле, и большой пакет файлов с открытым ключом находятся также в том же каталоге.
Это изменение может быть полезным при предоставлении огромного списка файлов с открытым ключом для импорта :-)
$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done