我尝试使用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。我想我曲解了函数的用法。有什么帮助吗?
发布于 2014-05-23 19:44:40
SERVICE_CERT_THUMBPRINT是您必须使用add_service_certificate方法上传其pfx文件的pem文件。
您可以使用以下内容生成一组新的密钥:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mycert.key -out mycert.pem这将生成密钥文件和pem文件
openssl pkcs12 -export -in mycert.pem -inkey mycert.key -out mycert.pfx这将生成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测试代码中提到的SERVICE_CERT_THUMBPRINT就是不带冒号的指纹。
现在,您可以使用密钥文件登录到计算机,例如
ssh -i mycert.key -p 22 username@azurecloud.cloudapp.net有关各个字段的含义,请参阅http://msdn.microsoft.com/library/azure/jj157194.aspx#SSH。请随意提问,我花了相当多的时间来完成这个设置。
https://stackoverflow.com/questions/17705780
复制相似问题