如何通过SSH连接到Linux的Windows子系统上的Microsoft Azure虚拟机?

时间:2020-03-21 21:51:17

标签: azure ssh windows-subsystem-for-linux

我创建了一个以Windows 10为映像的Microsoft Azure虚拟机。我允许它建立SSH连接。 Microsoft Azure门户上的连接显示“允许网络连接”。但是,当我尝试使用命令ssh -i <private key path> <vm-name>@<host ip address>在Linux的Windows子系统上连接它时,它显示为ssh: connect to host <host ip address> port 22: Resource temporarily unavailable。为什么会这样?

我还想知道Microsoft Azure上有关创建私钥然后具有私钥路径的说明。我应该如何创建一个私钥并为其提供路径?

1 个答案:

答案 0 :(得分:1)

您可以签出microsoft/WSL/issue 2278,其中列出了几个问题:

  • 防火墙
    • 该域已移至云端,我需要使用直接IP地址代替域名。
    • 我收到了“资源暂时不可用”错误,因为我的子网没有到Internet网关的路由
    • 我只是遇到了这个问题,因为我在服务器中安装了Nginx,并且默认情况下它会阻止SSH。您必须sudo ufw allow ssh

注意:如 Connect to an Azure Linux vm with ssh and Windows Subsystem for Linux 的“ matthewdavis111”中所述,您从WSL连接到Azure。

这意味着您将在Azure远程服务器的SSH字段中输入公共密钥:

https://matthewdavis111.com/images/wsl-ssh-azure/basic-settings.png

在您的PC上,您可以使用以下命令生成公钥/私钥:

ssh-keygen -P "" -t rsa -f azure

这将在%USERPROFILE%\.sshazure文件中创建。
将第二个内容(公共密钥)的内容复制到Azure设置。

取决于您的Windows 10版本,您可能需要安装Git for Widows,其中包括azure.pub

ssh-keygen.exe

不过,就您而言,在WSL bash会话中这样做更好,特别是如果其余操作都是在同一会话中完成的。
文件将位于C:\path\to\Git\usr\bin\ssh-keygen.exe ~/.ssh


对于Windows 10 VM,请参阅 Creating A Win 10 Virtual Machine – Azure Portal 的“ Ayush Rathi”。
那就不需要SSH了。

连接到虚拟机并登录:

  1. 在“集线器”菜单上,单击“虚拟机”。

  2. 从列表中选择虚拟机。

13 Click on Connect

  1. 在虚拟机刀片上,单击“连接”。这将创建并下载一个远程桌面协议文件(.rdp文件)以连接到您的计算机。打开此文件以连接到您的VM。

  2. 您将收到一个警告.rdp来自未知的发布者。这是正常警告。在“远程桌面”窗口中,单击“连接”以继续。

14 RDP Click Connect

  1. 在“ Windows安全性”窗口中,键入在创建VM时输入的用户名和密码。用户名输入为vmname \ username,然后单击OK。

15 Enter Username & Password

  1. 您将收到一条警告,指出无法验证远程计算机的身份。这是正常警告。单击“是”以验证虚拟机的身份并完成登录。

16 Certificate

您的计算机已经准备就绪,您可以像使用其他任何计算机或服务器一样使用它。