您可以使用不同的方式将文件传输到 Compute Engine 实例,具体取决于您的工作站操作系统和目标实例操作系统。
从以下操作系统传输 | 目标 Linux 实例 |
---|---|
Linux 或 macOS | |
Windows |
通过 Cloud Storage 传输文件
您可以将 Cloud Storage 存储分区用作您与实例之间的便捷中间传输点。
只要您的虚拟机可通过服务帐号或通过您的个人用户凭据访问您的 Cloud Storage 存储分区,那么这种文件传输方法就几乎适用于所有操作系统和虚拟机类型。
将您的文件从工作站上传到 Cloud Storage 存储分区。然后,从存储分区将这些文件下载到您的实例。
- 创建 Cloud Storage 存储分区或确定您要用于传输文件的现有存储分区。
- 在工作站上,将文件上传到存储分区。
- 使用 SSH 连接到您的虚拟机。
- 在您的虚拟机中,从存储分区下载文件。
如果您需要以相反方向传输文件,请以倒序执行该过程。 从您的虚拟机上传文件,然后将这些文件下载到您的工作站。
在浏览器中使用 SSH 传输文件
如果您可以使用通过浏览器发起 SSH 连接窗口与实例建立 SSH 连接,则可以使用该连接将文件传输到该实例。
- 在 Cloud Console 中,转到虚拟机实例页面。
-
在虚拟机实例列表中,点击要连接的实例所在行中的 SSH。
- 建立连接后,点击通过浏览器发起 SSH 连接窗口右上角的齿轮图标,然后选择上传文件。或者,选择下载文件以从实例下载文件。
- 此时系统会打开传输对话框。请指定要传输的文件。
如果您上传了文件,则该文件位于用户的 /home/$USER
目录中。
如果您下载了文件,则该文件位于本地工作站上的默认下载文件夹中。
使用 gcloud
命令行工具传输文件
gcloud
命令行工具提供了一个 SCP 文件传输实用工具,可在您首次连接时为您创建 SSH 密钥对。您的私钥存储在本地设备上,而其相应的公钥会被复制到项目或实例元数据中。
如需使用 SCP 传输文件,您必须在实例使用的网络上启用防火墙规则,以允许在端口 22
上建立 SSH 连接。如需验证此防火墙规则是否存在,您可以在 Google Cloud Console 中查找允许 tcp:22
连接的防火墙规则。
如果您不具有允许通过端口 22
建立 SSH 连接的防火墙规则,请创建防火墙规则。
您可以安装 gcloud
工具,然后通过该工具使用 scp
命令将文件和目录复制到您的实例。
以下示例会将文件从工作站复制到实例上的主目录。
gcloud compute scp local-file-path instance-name:~
替换以下内容:
local-file-path
是指向工作站上文件的路径。instance-name
:实例的名称。
您还可以将文件和目录从实例复制到本地工作站。以下示例展示了如何以递归方式将目录从实例(源)复制到本地工作站(目标)。
gcloud compute scp --recurse instance-name:remote-dir local-dir
替换以下内容:
instance-name
:实例的名称。remote-dir
:指向实例上目录的路径。local-dir
:您要在工作站中放置目录的路径。
如需了解详情,请参阅 gcloud compute scp
参考文档。
在 Linux 和 MacOS 工作站上使用 SCP 传输文件
scp
命令行工具的工作方式类似于 gcloud compute scp
,但需要您手动管理 SSH 密钥。
如需使用 SCP 传输文件,您必须在实例使用的网络上启用防火墙规则,以允许在端口 22
上建立 SSH 连接。如需验证此防火墙规则是否存在,您可以在 Google Cloud Console 中查找允许 tcp:22
连接的防火墙规则。
如果您不具有允许通过端口 22
建立 SSH 连接的防火墙规则,请创建防火墙规则。
scp
工具使用的密钥文件与您用于使用标准 SSH 连接实例的密钥文件相同。
如果您尚未将公钥应用于您的 Google Cloud Console 项目或实例,请获取 SSH 密钥对并将公共 SSH 密钥文件应用于您的项目或实例。
查找您要向其发送文件的实例的外部 IP。在 Google Cloud Console 中,转到虚拟机实例页面。
使用
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 连接实例的密钥文件相同。
如果您尚未将公钥应用于您的 Cloud Console 项目或实例,请获取 SSH 密钥对并将公共 SSH 密钥文件应用于您的项目或实例。
下载并安装 WinSCP。对于大多数用户,使用默认安装设置即可。
启动 WinSCP 程序。此时系统会打开一个登录窗口,您可以在其中配置您的连接设置。
查找您要向其发送文件的实例的外部 IP。在 Google Cloud Console 中,转到虚拟机实例页面。
在 WinSCP 中,配置您的连接设置。
将文件协议字段设置为
SCP
。在主机名字段中,指定要连接的实例的外部 IP 地址。
在用户名字段中,指定用于访问您的项目的 Google 用户名。在此示例中,用户为
example-user
。
点击高级下拉列表打开高级设置,然后导航到 SSH > 身份验证。
在私钥文件框中,指定指向私钥文件的路径。在此示例中,密钥文件为
my-ssh-key.ppk
。点击确定以保存高级设置。
点击登录连接您的实例。如果连接成功,系统会打开一个窗口,窗口左侧显示本地文件系统,右侧显示实例的文件系统。您可以转到这些文件系统中的不同目录,然后拖动文件,以将这些文件传输到实例或从实例中传输这些文件。
您可能无权管理实例上您的主目录以外的大多数文件。如需导航到实例上的主目录,请在 WinSCP 的路径字段中输入主目录和
username
。/home/username
使用 WinSCP 接口在您的工作站和实例之间移动文件。
将文件复制到实例后,连接您的实例,以便您可以使用完整的
sudo
权限执行或移动文件。
后续步骤
- 连接您的实例以使用您上传的文件。