使用 SCP 将文件移入和移出 VM

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集

本文说明如何使用安全复制 (SCP) 将文件从工作站上移到 Azure VM,或从 Azure VM 下移到工作站。 在工作站和 VM 之间快速安全地移动文件是管理 Azure 基础结构的关键。

本文中,你需要一个部署在 Azure 中并启用 SSH 的 VM。 还需要用于本地计算机的 SCP 客户端。 它基于 SSH 生成,并包含在大多数 Linux 和 Windows(10 及更高版本)安装的默认 shell 中。

快速命令

将文件上传到 VM

scp file azureuser@azurehost:directory/targetfile

从 VM 下载文件

scp azureuser@azurehost:directory/file targetfile

详细演练

例如,我们将 Azure 配置文件上移到 VM 并下拉日志文件目录,两项操作都使用 SCP 完成。

SSH 密钥对身份验证

SCP 将 SSH 用于传输层。 SSH 处理目标主机上的身份验证,同时还在 SSH 默认提供的加密隧道中移动文件。 对于 SSH 身份验证,可以使用用户名和密码。 但是,建议将 SSH 公钥和私钥身份验证作为安全性最佳做法。 SSH 对连接进行身份验证后,SCP 会开始复制文件。 使用正确配置的 ~/.ssh/config 以及 SSH 公钥和私钥时,仅使用服务器名称(或 IP 地址)即可建立 SCP 连接。 如果只有一个 SSH 密钥,SCP 会在 ~/.ssh/ 目录中查找它,并在默认情况下使用它登录到 VM。

有关配置 ~/.ssh/config 以及 SSH 公钥和私钥的详细信息,请参阅创建 SSH 密钥

将文件上传到 VM

在第一个示例中,我们将 Azure 配置文件向上复制到用于部署自动化的 VM。 由于此文件包含 Azure API 凭据,其中包括机密,因此安全性非常重要。 SSH 提供的加密隧道可保护文件的内容。

以下命令通过 FQDN myserver.chinanorth.chinacloudapp.cn 将本地 .azure/config 文件复制到 Azure VM。 如果未设置 FQDN,还可使用 VM 的 IP 地址。 Azure VM 上的管理员用户名为 azureuser。 该文件指向 /home/azureuser/ 目录。 在此命令中替换自己的值。

scp ~/.azure/config azureuser@myserver.chinanorth.cloudapp.com:/home/azureuser/config

从 VM 下载目录

在此示例中,我们将日志文件的目录从 VM 向下复制到工作站。 日志文件可能或可能不包含敏感或机密数据。 但是,使用 SCP 可确保加密日志文件内容。 日志目录可能包含太多相关文件,如果一次复制一个,则可能会很麻烦,因此在这种情况下最好下载整个目录。 使用 SCP 传输文件是将日志目录和文件获取到工作站上同时确保安全的最简单方法。

以下命令可将 Azure VM 上位于 /home/azureuser/log/ 目录中的文件复制到本地 /tmp 目录中:

scp -r azureuser@myserver.chinanorth.cloudapp.com:/home/azureuser/logs/. /tmp/

-r 标志指示 SCP 从命令中列出的目录位置以递归方式复制文件和目录。 另请注意,命令行语法类似于 cp 复制命令。

后续步骤