谷歌搜索毫无结果,因为大多数人对这个问题的理解都略有不同。
我正在尝试设置一个带有 SSH(无密码)的 Azure Linux VM,以便从 Windows 机器进行访问。2018 年更新:最初的要求是使用 WinSCP,但我同意使用 Putty(在 Windows 机器上,它是 SSH 客户端)。
如何在 Windows 上设置 Azure Linux VM 并使用尽可能少的附加工具生成所需的密钥?
答案1
首先,您需要获取 OpenSSH 文件格式的公钥authorized_keys
。
在温SCP5.15,您可以使用显示公钥在SSH > 身份验证高级站点设置对话框的页面:
或者你可以使用PuTTYgen- 这是PuTTY 软件包,但 WinSCP 有自己的副本(使用工具>运行PuTTYgen在WinSCP 登录对话框)。
启动 PuTTYgen。
以格式加载您的私钥
.ppk
。
获取格式的公钥后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
就这样!您已经完成了。