Добавление SSH-ключей к authorized_keys

132

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

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

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

    
задан Dave Long 01.06.2011 в 18:02
источник

9 ответов

153

Вам следует никогда сохранять файл с его содержимым, начиная с -----BEGIN RSA PRIVATE KEY----- на сервере, то есть ваш закрытый ключ. Вместо этого вы должны поместить ключ public в файл ~/.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 для деталей.

    
ответ дан Lekensteyn 01.06.2011 в 18:29
источник
130

Альтернативный способ установки открытого ключа в файле 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 .

ответ дан Marius Butuc 27.02.2013 в 20:31
106

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

ssh-copy-id user@host
    
ответ дан Shoaib Nawaz 01.06.2011 в 18:32
31
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
    
ответ дан jjg 01.06.2011 в 20:23
4

Самый простой способ - скопировать и вставить ...

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

cat ~/.ssh/id_rsa.pub

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

nano ~/.ssh/authorized_keys

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

    
ответ дан ow3n 07.09.2015 в 20:42
2

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

    
ответ дан user273266 23.04.2014 в 21:59
2

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

Ссылка

    
ответ дан einarc 03.03.2016 в 02:22
0

Получите оболочку на удаленном компьютере, где вы хотите поместить ключ, и затем вы можете запустить этот однострочный файл для создания необходимых файлов и каталогов, установить их разрешения и добавить ключ к файлу. Конечно, вы должны изменить часть 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
    
ответ дан Sarel Botha 07.12.2016 в 21:33
0

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

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

$ for i in $(cat ListOfPubKeyFiles.txt) ; do cat $i | ssh User@Hostname "cat >> ~/.ssh/authorized_keys"; done
    
ответ дан jlmontes 23.08.2016 в 19:32