如何在 Windows 计算机(SSH 客户端)上设置 SSH 密钥以访问 Azure Linux VM?

如何在 Windows 计算机(SSH 客户端)上设置 SSH 密钥以访问 Azure Linux VM?

谷歌搜索毫无结果,因为大多数人对这个问题的理解都略有不同。

我正在尝试设置一个带有 SSH(无密码)的 Azure Linux VM,以便从 Windows 机器进行访问。2018 年更新:最初的要求是使用 WinSCP,但我同意使用 Putty(在 Windows 机器上,它是 SSH 客户端)。

如何在 Windows 上设置 Azure Linux VM 并使用尽可能少的附加工具生成所需的密钥?

答案1

首先,您需要获取 OpenSSH 文件格式的公钥authorized_keys


获取格式的公钥后authorized_keys,将其粘贴到“SSH 公钥”在配置 Azure Linux 计算机时(或重置公钥时),请输入以下信息:

在此处输入图片描述

答案2

@Rohit Chatterjee 在评论中提供了正确答案:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout myPrivateKey.key -out myCert.pem

解释:

Azure 门户要求在 VM 配置过程中提供 PEM/CER(尽管可以提供密码)。PuttyGen 根据此答案从 PPK 创建 PEM,但门户不接受输出。如果我弄清楚了,我会在这里发布答案…… – Rohit Chatterjee 1 月 29 日 4:18 1 人赞同

好的,我按照 azure.microsoft.com/en-us/documentation/articles/… 上的说明操作,它们成功了。基本上,您运行“openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout myPrivateKey.key -out myCert.pem”。.pem 需要通过 Azure 门户上传。(我没有将此作为答案发布,因为我在 Mac 上执行了此操作,而发帖人要求提供 Windows 解决方案。谷歌搜索显示存在适用于 Windows 的 OpenSSL 发行版,但我没有尝试过。)– Rohit Chatterjee 1 月 29 日 4:49

此外,我在上面的评论中生成的私钥 - myPrivateKey.key - 需要导入 PuttyGen 并转换为 PPK。Putty 不会使用 .key 文件。– Rohit Chatterjee 1 月 29 日 4:51

答案3

我建议在 Windows 上以某种方式使用 SSH 命令。例如,在我的 Windows 7 机器上,我倾向于使用 Cygwin,它有 openssh。我可以从那里运行 ssh 命令,或者通过 cygwin 启动 sshd 服务器。

即使我决定使用 GUI 程序,我也希望它通过命令行工作,因为这是 SSH 的基础。GUI 程序使查看正在发生的事情和事情发生在哪里变得更加困难。命令行更一致。Windows GUI 程序可以提供的是服务器端,例如我使用过的 GUI 程序,在服务器端提供,当 SSH 进入时,会显示常规的 Windows 样式命令提示符。也许是 WinSCP

Windows 10 显然内置有 SSH,在安装时是可选的,并且可以在安装中或安装后添加。https://www.howtogeek.com/336775/how-to-enable-and-use-windows-10s-built-in-ssh-commands/ (并且还有包含 SSH 的 Win10 WSL)。

答案4

  • 在您的 Windows 机器上,使用搜索 > 应用程序和功能 > “管理可选功能” > “添加功能”选项。
  • 通过在框中搜索或按项目列表的降序字母顺序导航来安装“OpenSSH 客户端”功能,然后在弹出窗口中选择“安装”。
  • 成功后,打开cmd提示符或powershell并输入“ssh”,如果看到帮助菜单,则表示安装成功。
  • 然后打开 C:\Users\YourUsername\.ssh 目录。
  • 将部署 Linux VM 时从 Azure 生成的公钥粘贴到此目录中。
  • 现在在命令提示符或 powershell 上,首先导航或 cd 到相同的 .ssh 目录,然后执行以下命令(我显示 CMD 提示符示例)。

CMD> cd C:\Users\<您的公司用户名>\.ssh

CMD> ssh <azurevmusername>@azurevmPublicIP

或者

如果您在部署虚拟机时在 Azure 上创建了相同的用户名。

CMD> ssh azurevmIP

就这样!您已经完成了。

相关内容