Я последовал за Как сделать снимок виртуальной машины под управлением Linux для захвата образа виртуальной машины после установки нужных мне пакетов поверх Ubuntu 12.04 LTS. Я выключил машину после waagent -deprovision
и сделал снимок.
Когда я создал первую виртуальную машину (которую позже записал), я указал файл сертификата key1.pem
.
Когда я создал новую виртуальную машину из образа My Images, я указал файл сертификата key2.pem
.
Когда я попытался подключиться к новой виртуальной машине, я получил сообщение Permission denied (public key).
. Для подключения я использовал ssh -i ssh/key2 -p myport azureuser@myservice.cloudapp.net
.
В чем дело? Требуются ли какие-либо особые действия для использования ключа, отличного от того, который использовался в изображении шаблона? Это ошибка?
На первый взгляд кажется, что вы пытаетесь развернуть файл .pem в качестве открытого ключа пары ключей SSH в ~azureuser/.ssh/authorized_keys
так что вы можете использовать аутентификацию на основе ключей, а не вход по ssh на основе пароля, так ли это?
Я обычно связываю файлы PEM с сертификатами SSL, и вы должны отметить, говоря словами справочной страницы, что Сертификаты SSH - это другой и гораздо более простой формат сертификатов X.509, используемых в SSL.. Поэтому использование сертификатов SSL вместо ключей / сертификатов SSH не удастся.
Обычно пара ключей SSH для частного использования создается с помощью ssh-keygen -b 2048 -t rsa -f .ssh/mykey
который создаст 2048-битный файл закрытого ключа RSA ~/.ssh/mykey
и соответствующий открытый ключ ~/.ssh/mykey.pub
. Этот открытый ключ необходимо развернуть на ~azureuser/.ssh/authorized_keys
Убедитесь, что и на вашем клиенте, и на сервере ~/.ssh
каталог доступен только владельцу с chmod 0700
и все ключевые файлы доступны для чтения только их владельцу, т.е. chmod 0600
.
Дальнейшую отладку ssh можно выполнить с клиента с помощью ssh -v -i ssh/mykey -p myport azureuser@myservice.cloudapp.net
или даже более подробно с -vv
.