首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用azure-sdk- for -python为Linux虚拟机配置密钥对的SSH登录?

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

Stack Overflow用户
提问于 2013-07-18 00:53:43
回答 1查看 1.8K关注 0票数 1

我尝试使用azure-sdk-for-python在Windows Azure上部署Linux虚拟机。幸运的是,我能够使用基于密码的身份验证配置VM,但没有成功使用SSH密钥。谁能解释一下我如何通过azure-sdk-for-python配置ssh登录?

我在这里找到了使用ssh密钥创建linux的测试代码:(请参阅_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)准备使用user_name、user_password和ssh进行身份验证。此外,看起来PublicKey和KeyPair类用于配置带有密钥的SSH登录。然而,我对这些设置的用法并不清楚。我想我必须询问有关测试代码的详细信息。

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

我尝试使用这些代码行,但未能部署VM。我想我曲解了函数的用法。有什么帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2014-05-23 19:44:40

SERVICE_CERT_THUMBPRINT是您必须使用add_service_certificate方法上传其pfx文件的pem文件。

您可以使用以下内容生成一组新的密钥:

代码语言:javascript
复制
 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mycert.key -out mycert.pem

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

代码语言:javascript
复制
 openssl pkcs12 -export -in mycert.pem -inkey mycert.key -out mycert.pfx

这将生成pfx文件

接下来上传pfx文件

代码语言:javascript
复制
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文件的指纹

代码语言:javascript
复制
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

测试代码中提到的SERVICE_CERT_THUMBPRINT就是不带冒号的指纹。

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

代码语言:javascript
复制
ssh -i mycert.key -p 22 username@azurecloud.cloudapp.net

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17705780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档