У меня есть сервер Ubuntu на Amazon EC2, который я использую для разработки, и сегодня я тупо очистил все от своего ~/.ssh/authorized_keys
файла. К счастью, у меня открыт SSH, поэтому я все еще подключен и могу исправить файл, но когда я пытаюсь вернуть файл ключа обратно, он не работает. Я все еще получаю отказано в доступе к серверу на моей локальной машине.
authorized_keys
имеет разрешения 600. Я попытался добавить свой SSH-ключ с помощью ssh-rsa и оставить ssh-rsa выключенным. Я также попытался сделать ключ SSH одной строкой, но это тоже не сработало.
Есть ли что-то еще, что я должен сделать, как перезагрузить файл, как?
data-recovery
ssh
amazon-ec2
Дейв Лонг
источник
источник
Ответы:
Вы никогда не должны сохранять файл с его содержимым, начинающимся
-----BEGIN RSA PRIVATE KEY-----
на сервере, то есть с вашим закрытым ключом. Вместо этого вы должны поместить открытый ключ в~/.ssh/authorized_keys
файл.Этот открытый ключ имеет
.pub
расширение при генерации с использованиемssh-keygen
и его содержимое начинается сssh-rsa AAAAB3
. (Бинарный формат описан в ответах на этот вопрос ).Разрешения
~/.ssh
на сервере должны быть 700. Предполагается, что файл~/.ssh/authorized_keys
(на сервере) имеет режим 600. Разрешения (частного) ключа на стороне клиента должны быть 600.Если закрытый ключ не был защищен паролем и вы поместили его на сервер, я рекомендую вам создать новый:
Вы можете пропустить это, если вы полностью уверены, что никто не сможет восстановить удаленный закрытый ключ с сервера.
Если это не помогает, запустите
ssh
варианты для большей детализации:На стороне сервера вы можете просмотреть
/var/log/auth.log
детали.источник
ssh-keygen -t rsa
и поместить вновь созданныйid_rsa.pub
файл~/.ssh/authorized_keys
на ваш сервер. См. Также docs.amazonwebservices.com/AWSEC2/latest/UserGuide/…ssh-keygen -y -f key.pem > key.pub
Альтернативный способ установки вашего открытого ключа на удаленном компьютере
authorized_keys
:Некоторые преимущества:
не требует
ssh-copy-id
установки.гарантирует , что
mkdir
работы , прежде чем пытаться добавитьid_rsa.pub
кauthorized_keys
.источник
mkdir -p ~/.ssh
части ответа, данного @MariusButuc,umask 077 && mkdir -p ~/.ssh
- это все, что вам нужно сделать, чтобы обеспечить его правильную работу.Если у вас есть авторизация на основе входа в систему, используйте ее
ssh-copy-id
для добавления ваших открытых ключей на удаленный сервер.источник
brew install ssh-copy-id
sudo port install openssh +ssh_copy_id
.+ssh_copy_id
Устанавливает OpenSSH с ssh_copy_id вариантом.источник
Самый простой способ - скопировать и вставить ...
Сначала просмотрите / скопируйте содержимое вашего локального открытого ключа,
id_rsa.pub
включая начинающийся «ssh-rsa», пока он не заканчивается вашим адресом электронной почты:Затем отредактируйте
authorized_keys
на сервере и вставьте содержимое буфера обмена под любые другие ключи в этом файле:И сохраните
Ctl+O
, выйдите из файлаCtl+X
, выйдите из сеанса SSHexit
и попробуйте войти снова, чтобы подтвердить, что он работает. Если он не спрашивал пароль, он работал.источник
Я подумал, что могу внести свой вклад в это, поскольку речь идет именно об экземплярах AWS, и все ответы рассматривают проблему только как проблему Linux, как если бы это была часть оборудования. Первое, что вам нужно понять, это то, что вы никогда не должны рассматривать экземпляры EC2 как аппаратные средства. Это просто создаст для вас больше работы. Считайте их изменчивыми. Это самое большое препятствие, которое я вижу у людей с AWS. Сделайте AMI вашего экземпляра и введите нужный ключ в новый экземпляр. cloud-init позаботится об этом за вас. Более подробно все, что вам нужно сделать, это использовать правильный открытый ключ при создании нового экземпляра из AMI оригинала. Если, как и в комментариях к утвержденному ответу, вы хотите создать свою собственную пару ключей файлов pub и 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
источник
После сохранения открытого ключа вы должны сохранить закрытый ключ в каталог и файл на вашем компьютере. А в разделе аутентификации ssh для putty вы должны указать файл закрытого ключа, который вы сохранили на рабочем столе. Это будет работать. Меня устраивает.
источник
Получите на удаленной машине оболочку, в которую вы хотите поместить ключ, и затем вы сможете запустить этот однострочный файл для создания необходимых файлов и каталогов, установить их разрешения и добавить ключ к файлу. Конечно, вы должны изменить
KEYGOESHERE
часть ниже и комментарий после него.источник
Вот вариант, при котором у вас может быть список имен файлов с открытым ключом в текстовом файле, и большая партия файлов с открытым ключом также находится в том же каталоге.
Этот вариант может быть полезен, если вы давали огромный список файлов открытых ключей для импорта :-)
источник