Аутентификация с помощью открытого ключа SSH в Linux Azure DSVM через R - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь использовать пакет R AzureDSVM для создания Linux DSVM через R. Я читаю руководство https://raw.githubusercontent.com/Azure/AzureDSVM/master/vignettes/10Deploy.Rmd (руководство по Azure DSVM)

Сначала руководство запрашивает созданиеПриложение Azure Active Directory, которое будет предоставлять «идентификатор клиента», «идентификатор клиента» и «ключ пользователя», рекомендации, описанные в http://htmlpreview.github.io/?https://github.com/Microsoft/AzureSMR/blob/master/inst/doc/Authentication.html (руководство по аутентификации SMR Azure)

Насколько я понимаю,при этом создается приложение, зарегистрированное в Azure Active Directory, создается «ключ аутентификации» для приложения, которым является ключ пользователя, и связывается приложение с группой ресурсов.Я сделал это успешно.

Затем руководство Azure DSVM создает виртуальную машину с аутентификацией с открытым ключом, аналогично следующему:

library(AzureSMR) 
library(AzureDSVM)   

TID <- "123abc"          # Tenant ID
CID <- "456def"          # Client ID
KEY <- "789ghi"          # User key

context <- createAzureContext(tenantID=TID, clientID=CID, authKey=KEY)

resourceGroup<-"myResouceGroup"
location<-"myAzureLocation"
vmUsername<-"myVmUsername"
size<-"Standard_D1_v2"
mrsVmPassword<-"myVmPassword"
hostname<-"myVmHostname"

ldsvm <- deployDSVM(context, 
                    resource.group = resourceGroup,
                    location       = location,
                    hostname       = hostname,
                    username       = vmUsername,
                    size           = size,
                    os = "Ubuntu",
                    pubkey         = PUBKEY)

В руководстве смутно описывается создание открытого ключа.(PUBKEY) из личного ключа пользователя, который отправляется на виртуальную машину, чтобы позволить ей обеспечивать аутентификацию SSH:

Для начала нам нужно загрузить наши учетные данные Azure, а также открытый ключ ssh пользователя,Открытые ключи в Linux обычно создаются на настольном компьютере / ноутбуке пользователя и находятся в ~ / .ssh / id_rsa.pub.Будет удобно создать файл учетных данных, который будет содержать эту информацию.Содержимое файла учетных данных будет выглядеть примерно так: мы предполагаем, что пользователь создает такой файл в текущем рабочем каталоге, называя файл _credentials.R.Замените на имя пользователя пользователя.

TID <- "72f9....db47"          # Tenant ID
CID <- "9c52....074a"          # Client ID
KEY <- "9Efb....4nwV....ASa8=" # User key

PUBKEY   <- readLines("~/.ssh/id_rsa.pub") # For Linux DSVM

Мой вопрос:

Этот открытый ключ PUBKEY сгенерирован из аутентификации / ключа пользователя, созданного путем настройкиПриложение Azure Active Directory в руководстве по аутентификации SMR Azure (переменная KEY в приведенном выше сценарии)?Если да, то как?Я пытался использовать библиотеку натрия R pubkey(charToRaw(KEY)), но я получаю «Неверный ключ, должен быть ровно 32 байта».

Если PUBKEY не генерируется из KEY, из чего он генерируется?И как пакет узнает, как пройти аутентификацию с помощью закрытого ключа для этого открытого ключа?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Пара вещей в дополнение к (правильному) ответу Пола Шили:

ssh-keygen также устанавливается в последних версиях Windows 10 Pro вместе с ssh, scp и curl. В противном случае у вас, вероятно, установлен клиент Putty ssh, и в этом случае вы можете использовать puttygen для сохранения пары открытый / закрытый ключ.

AzureDSVM довольно старый и зависит от AzureSMR, который больше не поддерживается. Если вы хотите развернуть DSVM, я бы рекомендовал использовать пакет AzureVM, который находится на CRAN и GitHub . Это, в свою очередь, основывается на пакете AzureRMR , который обеспечивает общую основу для управления ресурсами Azure.

library(AzureVM)
az <- AzureRMR::az_rm$new(tenant="youraadtenant", app="yourapp_id", password="password")
sub <- az$get_subscription("subscription_id")
rg <- sub$get_resource_group("rgname")

vm <- rg$create_vm(os="Ubuntu",
    username="yourname",
    passkey=readLines("~/.ssh/id_rsa.pub"),
    userauth_type="key")

Для получения дополнительной информации ознакомьтесь с AzureRMR и AzureVM .

Отказ от ответственности: я являюсь автором AzureRMR и AzureVM.

0 голосов
/ 24 января 2019

Ключ AAD используется для аутентификации в AAD.Пара открытых / закрытых ключей является отдельной и используется для аутентификации на виртуальной машине.Если у вас нет открытого ключа (в файле ~ / .ssh / id_rsa.pub), вы можете создать его, используя ssh-keygen в Linux.

Соединения SSH по умолчанию используют закрытый ключ (в ~ / .ssh / id_rsa).

...