当前位置: 首页 > 知识库问答 >
问题:

如何使用Azure-SDK-for-Python为Linux VM配置具有密钥对的SSH登录?

浦德义
2023-03-14

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

我在这里找到了一个使用ssh键创建linux vm的测试代码:(请参阅_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公钥的本地路径。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证书。

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

共有1个答案

司浩壤
2023-03-14

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。请随意提问,我花了相当多的时间得到这个设置。

 类似资料:
  • 我下载并安装git从:https://git-scm.com/downloads.我现在可以在Windows命令提示符上使用git。 我下载了puttygen并用它生成了一对RSA密钥,存储在 我将公钥添加到我公司的git网站。 现在,我如何告诉git使用我刚刚创建的rsa密钥?

  • 我正在尝试设置一个SpringCloudConfig服务器,该服务器使用ssh私钥的自定义位置。我需要为密钥指定自定义位置的原因是,运行应用程序的用户没有主目录。。所以我没有办法使用默认的我的密钥的目录。我知道可以选择创建一个只读帐户,并在配置中提供用户/密码,但ssh方式更干净 有什么方法可以设置这个吗?

  • 本文向大家介绍CentOS SSH无密码登录的配置,包括了CentOS SSH无密码登录的配置的使用技巧和注意事项,需要的朋友参考一下 配置SSH无登陆验证,在很多场景下是非常方便的,尤其是在管理大型集群服务时,避免了繁琐的密码验证,在安全级别越高的服务器上,通常密码的设置更复杂,配置SSH,不仅可以用密钥保证节点间通信的安全性,同时也降低了频繁输入密码登陆的耗时,大大提高了管理效率。 原理简介

  • 我想在应用程序配置服务中检索Azure密钥库引用的秘密。在dotnet中,这是小菜一碟,只需添加Options.configureKeyVault,就可以像下面这样检索secret: 但是在Python中,我没有找到任何方法可以在AzureAppConfigurationClient中添加KeyVault处理,当您试图检索KeyVault引用的secret时,您只需要得到字符串: 。 我已经“解决

  • 主要内容:创建SSH密钥SSH代表用于管理网络,操作系统和配置的Secure Shell或Secure Socket Shell,并且每次都不需要使用用户名和密码即可验证GitLab服务器。 您可以设置SSH密钥以提供计算机与GitLab之间的可靠连接。 在生成之前,您需要在系统中安装Git。 创建SSH密钥 步骤(1): 要创建SSH密钥,请打开命令提示符并输入命令,如下所示: 它会提示’输入保存密钥的文件():’,只

  • 问题内容: 我正在尝试使用Apache2设置Debian服务器作为运行Jenkins的Tomcat 7的前端-这正在工作- 但我希望Jenkins监视托管在bitbucket上的私有Mercurial存储库,并且我想使用SSH。(我曾尝试使用简单的https,但仍然没有喜悦- SO上有一个问题答案,建议使用ssh) 通过将Jenkins .WAR文件拖放到/ webapps中,我已经使用Tomca