Назад | Перейти на главную страницу

Захваченная виртуальная машина Linux Azure, построенная из образа. Другой пароль или ключ для новой виртуальной машины: в разрешении отказано?

Я последовал за Как сделать снимок виртуальной машины под управлением 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.