您可以使用不同的方式将文件传输到 Compute Engine 虚拟机实例,具体取决于您的工作站操作系统和目标虚拟机实例操作系统。
从以下操作系统传输 | 传输至 Linux 虚拟机 |
---|---|
Linux 或 macOS | |
Windows |
通过 Cloud Storage 传输文件
Cloud Storage 存储桶可用作您与虚拟机之间的转移点。您可以使用网络浏览器、Google Cloud CLI 或编程语言在 Cloud Storage 和 Compute Engine 虚拟机之间传输文件。
不同的凭据类型可用于上传和下载步骤,以最大限度满足您的需求:
如需使用 Cloud Storage 在计算机和虚拟机之间传输文件,请执行以下操作:
- 如果您还没有用于文件传输的存储桶,请创建 Cloud Storage 存储桶。
-
使用 IAM 权限修改对存储桶的访问权限:
- 将文件上传到存储桶的账号应具有 Storage Object Admin 角色。
- 下载文件的账号应具有 Storage Object Viewer 角色。
- 登录源设备并将文件上传到存储桶。
- 登录目标设备,并从完成文件传输的存储桶中下载文件。
- 可选:删除不再需要的文件,以避免产生任何不必要的存储费用。
如果您需要以相反方向传输文件,则可以反向执行此过程。确保上传文件的账号具有存储桶的写入权限。
通过浏览器使用 SSH 传输文件
如果您可以通过浏览器使用 SSH 与虚拟机建立 SSH 连接,则可以使用该连接向该虚拟机传输文件以及从该虚拟机传输文件。
上传到虚拟机
- 在 Google Cloud 控制台中,打开虚拟机实例页面。
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
建立连接后,点击上传图标
。此时系统会打开上传对话框。
- 选择要上传的文件。
- 点击上传文件以上传文件。文件会上传到
/home/USER
目录。
从虚拟机下载
- 在 Google Cloud 控制台中,打开虚拟机实例页面。
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
建立连接后,点击下载图标
。此时系统会打开下载对话框。
- 在路径文本框中,输入要下载的文件的相对文件路径。
- 点击下载以下载文件。文件将下载到工作站的默认下载文件夹中。
使用 Google Cloud CLI 传输文件
Google Cloud CLI 通过已建立的 SSH 连接提供安全复制协议 (SCP) 文件传输实用程序。
如需使用 SCP 传输文件,请执行以下操作:
-
查看您的防火墙规则并确认端口
22
上的 SSH 连接已获得系统许可;否则,请创建 SSH 防火墙规则。 - 确保包含要传输的文件的来源设备上已安装 gcloud CLI。
-
使用
gcloud compute scp
命令将文件传输到目标机器。
以下示例会将文件从工作站复制到虚拟机的主目录:
gcloud compute scp LOCAL_FILE_PATH VM_NAME:REMOTE_DIR
请替换以下内容:
LOCAL_FILE_PATH
:机器上的文件的路径VM_NAME
:您的虚拟机的名称REMOTE_DIR
:远程机器上的目录
您还可以从远程机器反向复制文件和目录。以下示例以递归方式将目录从来源复制到目标位置:
gcloud compute scp --recurse VM_NAME:REMOTE_DIR LOCAL_FILE_PATH
如需了解详情,请参阅 gcloud compute scp
参考文档。
在 Linux 和 MacOS 工作站上使用 SCP 传输文件
scp
命令行工具的工作方式类似于 gcloud compute scp
,但需要您手动管理 SSH 密钥。
如需使用 SCP 传输文件,您必须在虚拟机使用的网络上设置防火墙规则,以允许在端口 22
上建立 SSH 连接。如需验证此防火墙规则是否存在,您可以在 Google Cloud 控制台中查找允许 tcp:22
连接的防火墙规则。
如果您不具有允许通过端口 22
建立 SSH 连接的防火墙规则,请创建防火墙规则。
scp
工具使用的密钥文件与您用于使用标准 SSH 连接实例的密钥文件相同。
如果您尚未将公钥应用于您的 Google Cloud 控制台项目或虚拟机实例,请创建 SSH 密钥对并将公钥添加到项目或实例元数据中。
查找您要向其发送文件的虚拟机的外部 IP。在 Google Cloud 控制台中,转到虚拟机实例页面。
使用
scp
工具将文件从工作站复制到目标虚拟机的主目录。在此示例中,私钥位于~/.ssh/my-ssh-key
。scp -i ~/.ssh/my-ssh-key LOCAL_FILE_PATH USERNAME@IP_ADDRESS:~
请替换以下内容:
LOCAL_FILE_PATH
:您要上传的本地文件的名称USERNAME
:您的用户名IP-ADDRESS
:您的虚拟机的外部 IP 地址
您还可以将文件从虚拟机复制到本地工作站,只需颠倒来源变量和目的地变量的顺序即可。在此示例中,将文件从虚拟机复制到工作站上的路径。
scp -i ~/.ssh/my-ssh-key USERNAME@IP_ADDRESS:REMOTE_FILE_PATH LOCAL_FILE_PATH
请替换以下内容:
USERNAME
:您的用户名IP_ADDRESS
:您的虚拟机的外部 IP 地址REMOTE_FILE_PATH
:您要下载的远程文件的名称LOCAL_FILE_PATH
:您要在工作站上下载文件的位置
在 Windows 工作站上使用 WinSCP 传输文件
在 Windows 工作站上,您可以使用 WinSCP 客户端通过图形文件浏览器界面管理实例上的文件。
WinSCP 使用的密钥文件与您用于使用 PuTTY 连接虚拟机的密钥文件相同。
如果您尚未为实例配置基于密钥的 SSH 身份验证,请执行以下操作:
使用 PuTTYgen 创建 SSH 密钥对。ssh 私钥必须使用
.ppk
格式,这是 PuTTYgen 创建的密钥的默认格式。将 SSH 公钥添加到项目元数据或虚拟机元数据。如需了解详情,请参阅将 SSH 密钥添加到项目元数据或将 SSH 密钥添加到实例元数据。
查找您要向其发送文件的虚拟机的外部 IP。
- 在 Google Cloud 控制台中,转到虚拟机实例页面。
- 在虚拟机列表中,找到虚拟机的外部 IP 列中的外部 IP 地址。
下载并安装 WinSCP。对于大多数用户,使用默认安装设置即可。
启动 WinSCP 程序。此时系统会打开一个登录窗口,您可以在其中配置您的连接设置。
在 WinSCP 中,配置您的连接设置。
在文件协议字段中选择
SCP
作为文件传输协议。在主机名字段中,指定要连接到的虚拟机的外部 IP 地址。
在用户名字段中,指定用于访问项目的 Google 用户名。在此示例中,用户为
example-user
。
点击高级下拉列表打开高级设置,然后导航到 SSH > 身份验证。
在私钥文件框中,指定为虚拟机创建的 SSH 密钥对的私钥文件的路径。
点击确定以保存高级设置。
点击登录连接到您的虚拟机。如果连接成功,系统会打开一个窗口,左侧显示本地文件系统,右侧显示虚拟机的文件系统。您可以转到这些文件系统中的不同目录,然后拖动文件,以将这些文件传输到虚拟机或从虚拟机中传输这些文件。
您可能无权管理虚拟机主目录之外的大多数文件。转到虚拟机的主目录:
/home/USERNAME
使用 WinSCP 接口在您的工作站和虚拟机之间移动文件。
将文件复制到虚拟机后,连接您的实例,以便您可以使用完整的
sudo
权限执行或移动文件。
后续步骤
- 连接您的实例以使用您上传的文件。