如何使用azure-sdk-for-python为Linux虚拟机配置SSH登录和密钥对?

2024-09-28 03:15:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用azuresdkforpython在windowsazure上部署linuxvm。幸运的是,我能够使用基于密码的身份验证配置一个VM,但是没有成功地使用SSH密钥。有人能解释一下我如何通过azuresdkforpython配置ssh登录吗?在

我在这里找到了一个用ssh密钥创建linuxvm的测试代码:(请参见create_vm_linux()函数) https://github.com/WindowsAzure/azure-sdk-for-python/blob/master/test/azuretest/test_servicemanagementservice.py (这可能不是一个正确的例子,因为它正在测试中,但我想它至少能起作用。) LinuxConfigurationSet(self,host_name=None,user_name=None,user_password=None,disable_ssh_password_authentication=None)似乎准备使用用户名、用户名和ssh进行身份验证。另外,看起来PublicKey和KeyPair类用于使用密钥配置SSH登录。但是,我不清楚这些设置的用法。我想我得问一下关于测试代码的细节。在

对于PublicKey,我假设第一个参数是服务管理证书的指纹,第二个参数是SSH公钥的本地路径。 pk = PublicKey(SERVICE_CERT_THUMBPRINT, u'/home/unittest/.ssh/authorized_keys') 对于KeyPair,我假设第一个参数与PublicKey相同,第二个参数是SSH私钥的本地路径。(我不知道为什么这里需要私钥) pair = KeyPair(SERVICE_CERT_THUMBPRINT, u'/home/unittest/.ssh/id_rsa') 密钥对是x509证书。在

我试过用这些线路,但未能部署虚拟机。我想我误解了函数的用法。有什么帮助吗?在


Tags: 函数testnone身份验证参数部署service密钥
1条回答
网友
1楼 · 发布于 2024-09-28 03:15:45

SERVICE_CERT_指纹是pem文件的指纹,您必须使用add_SERVICE_certificate方法上载其pfx文件。在

可以使用以下方法生成一组新的密钥:

 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mycert.key -out mycert.pem

这将生成密钥文件和pem文件

^{pr2}$

这将生成pfx文件

下一步上传pfx文件

cert_data_path = "/home/swati/keys/mycert.pfx"
with open(cert_data_path, "rb") as bfile:
    cert_data = base64.b64encode(bfile.read())
    cert_format = 'pfx'
    cert_password = ''
    cert_res = sms.add_service_certificate(service_name='qubolecloud',
                        data=cert_data,
                        certificate_format=cert_format,
                        password=cert_password)

使用获取pem文件的指纹

openssl x509 -in mycert.pem -sha1 -noout -fingerprint
SHA1 Fingerprint=98:34:21:38:KJ:1E:D8:CC:A8:9E:89:21:DF:D7:5D:34:A7:D1:F2:E1

测试代码中提到的服务指纹是这个没有冒号的指纹。在

现在可以使用密钥文件登录到机器,例如

ssh -i mycert.key -p 22 username@azurecloud.cloudapp.net

请参考http://msdn.microsoft.com/library/azure/jj157194.aspx#SSH了解各个字段的含义。请随意提问,我花了相当多的时间来完成这个设置。在

相关问题 更多 >

    热门问题