如何获取使用PowerShell创建的新Azure Linux VM的ssh主机密钥?

Oli*_*ock 14 ssh azure azure-vm-role

如果我使用PowerShell创建Azure Linux VM,我如何获得其新的ssh主机密钥,以便我可以在我的本地ssh/putty中安装它?优选地,该解决方案也是PowerShell代码.

Mar*_*ryl 6

可以使用Azure 门户的 “运行命令”功能

  • 在虚拟机页面,进入“运行命令”中的“操作” VM菜单的部分。
  • 选择“RunShellScript”命令。
  • 粘贴以下命令:

    for f in /etc/ssh/ssh_host_*_key; do ssh-keygen -l -f "$f"; done
    
    Run Code Online (Sandbox Code Playgroud)
  • 您将获得如下输出:

    Enable succeeded: 
    [stdout]
    256 SHA256:bKKCom8yh5gOuBNWaHHJ3rrnRXmCOAyPN/WximYEPAU /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
    256 SHA256:IYeDl+gseYk46Acg4g2mcXGvCr7Z8FqOd+pCJz/KLHg /etc/ssh/ssh_host_ed25519_key.pub (ED25519)
    2048 SHA256:rA0lIXvHqFq7VHKQCqHwjsj28kw+tO0g/X4KnPpEjMk root@myazurevm (RSA)
    
    [stderr] 
    
    Run Code Online (Sandbox Code Playgroud)

    (密钥类型集会因您的 VM 映像而异)


该功能也可以通过 Azure CLI 使用,如上面的链接和@mwik 的回答所示。


另请查看我使用 SFTP 安全连接到 Microsoft Azure 服务的完整指南。


mwi*_*wik 5

这是一个老问题,但是对于新手来说,如今可以通过使用Azure CLI中的运行命令来找到一种替代方法。PowerShell可能也有一个等效项,但我尚未对此进行调查。

az vm run-command invoke --name <your-vm-name> --command-id RunShellScript --scripts "cat /etc/ssh/ssh_host_ecdsa_key.pub"
Run Code Online (Sandbox Code Playgroud)

将输出一个json文档,您可以从中提取公钥。请注意,此过程非常慢(每个主机约30秒),但是您只需要运行一次即可。见这个主旨为如何更新与Ansible known_hosts文件的例子。

  • 现在你还需要添加`-g`(或`--resource-group`),除此之外,是的,那行得通,非常感谢! (2认同)

gh0*_*0st -1

也许正是您正在寻找的。我现在就用我的帐户和你一起尝试一下。

基本上看起来你需要.pem在创建时附加一个。在此输入图像描述

这应该会产生您的证书指纹。
在此输入图像描述