连接到内部 SFTP 服务器

本文档介绍如何连接到 Cloud FTP 中的内部 SFTP 服务器。借助 SFTP 服务器,您可以安全地将文件传入和传出 Cloud Storage。您可以使用标准 SFTP 命令和 SFTP 客户端在 Cloud Storage 存储分区中上传或下载数据。

内部服务器只能使用 Private Service Connect 在您的虚拟私有云 (VPC) 网络中访问。如需了解背景信息, 请参阅 VPC 概览 和 Private Service Connect 概览。

准备工作

完成以下部分中的前提条件。

配置 VPC 网络

本文档中的步骤假定您已拥有 VPC 网络。 如需了解创建 VPC 网络的步骤,请参阅 创建和管理 VPC 网络。

您可以从与 Private Service Connect 端点位于同一网络中的 Compute Engine 实例或服务连接到该端点的专用 IP 地址。您可能需要配置网络以允许这些连接。例如,如果您使用 Compute Engine 客户端虚拟机连接到端点,请添加一条允许入站 SSH 连接到虚拟机实例的防火墙规则。

配置 Private Service Connect 端点

首次连接到内部 SFTP 服务器之前,请完成以下步骤:

  1. 生成您将用于向服务器进行身份验证的 SSH 密钥对。

    您需要哪种密钥格式?

    您需要的密钥格式取决于您用于连接到 SFTP 服务器的客户端。如需了解详情,请参阅支持的 SFTP 客户端。

    PEM 格式

    1. 如需创建 OpenSSH 密钥对(PEM 格式),请使用 ssh-keygen 实用程序。

      在将连接到 SFTP 服务器的客户端机器上,运行以下命令:

      ssh-keygen -t rsa -b 4096 -f ~/.ssh/KEY_PAIR_NAME

      将 KEY_PAIR_NAME 替换为密钥对的名称,例如 sftp_user_key。

    2. 提取公钥:

      cat ~/.ssh/KEY_PAIR_NAME.pub

    PPK 格式

    1. 如需创建 PuTTY 密钥对(PPK 格式),请使用 PuTTYgen 工具。

      在将连接到 SFTP 服务器的客户端机器上,运行以下命令:

      puttygen -t rsa -b 4096 -o KEY_PAIR_NAME.ppk

      将 KEY_PAIR_NAME 替换为密钥对的名称,例如 sftp_user_key。

    2. 提取公钥:

      puttygen -L KEY_PAIR_NAME.ppk

    将公钥提供给 Cloud FTP 管理员。管理员将为您创建一个 SFTP 用户账号,并将您添加到服务器。

  2. 请 Cloud FTP 管理员向您提供以下信息,您需要这些信息才能连接到服务器:

    • 服务器的服务连接的 URI。
    • 您的 SFTP 用户名。
    • (可选)服务器的密钥指纹。
  3. 按照相应步骤 创建 Private Service Connect 端点。 提供以下信息:

    • 目标:选择已发布的服务。
    • 目标服务:服务连接的 URI。服务 连接 URI 的格式为 projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME。
    • 名称:端点的名称。使用与服务连接 URI 中的 SERVICE_PROJECT 相同的值。
    • 网络:端点的 VPC 网络。
    • 子网:端点的子网。
    • IP 地址:为端点创建 IP 地址。
    • 如果您要在与服务连接不同的区域中创建客户端虚拟机,请选择启用全球访问权限 。

    记下端点的 IP 地址。

  4. 在与端点相同的网络中,配置客户端(例如 Compute Engine 实例或服务),以便该实例或服务可以连接到端点的专用 IP 地址。

    例如,如需将 Compute Engine 实例用作客户端虚拟机,请执行以下操作:

    1. 按照相应步骤 创建 Compute Engine 实例( 如果该实例尚不存在)。提供以下信息:

      • 区域:如果您在创建 端点时未启用全球访问权限,请选择与 SFTP 服务器的服务 连接相同的区域。
      • 网络接口:选择与端点相同的 VPC 网络和 子网。

      记下客户端虚拟机的名称和可用区。

    2. 将私钥传输到客户端虚拟机:

      gcloud compute scp ~/.ssh/KEY_PAIR_NAME CLIENT_VM_NAME:~/.ssh/KEY_PAIR_NAME \
      --zone=CLIENT_VM_ZONE --project=PROJECT_ID

      替换以下内容:

      • CLIENT_VM_NAME:客户端虚拟机的名称。
      • CLIENT_VM_ZONE:客户端虚拟机所在的可用区。
      • PROJECT_ID:项目的项目 ID 或编号。Google Cloud

连接到内部 SFTP 服务器

OpenSSH

  1. 连接到与 Private Service Connect 端点位于同一 VPC 网络中的客户端 Compute Engine 实例或服务。

    例如,如果您使用 Compute Engine 实例作为客户端虚拟机,请使用 SSH 连接到 客户端虚拟机:

    gcloud compute ssh CLIENT_VM_NAME --zone=CLIENT_VM_ZONE --project=PROJECT_ID

    替换以下内容:

    • CLIENT_VM_NAME:客户端虚拟机的名称
    • CLIENT_VM_ZONE:客户端虚拟机所在的可用区
    • PROJECT_ID:项目的项目 ID 或编号 您的 Google Cloud 项目
  2. 使用 OpenSSH 连接到 SFTP 服务器:

    sftp -i ~/.ssh/KEY_PAIR_NAME USERNAME@IP_ADDRESS

    替换以下内容:

    • KEY_PAIR_NAME:SSH 密钥对的名称,例如 sftp_user_key
    • USERNAME:您的 SFTP 用户名
    • IP_ADDRESS: Private Service Connect 端点的 IP 地址

    如果您是首次连接到服务器,可能会看到类似 The authenticity of host 'HOSTNAME (IP_ADDRESS)' can't be established, 的消息,以及服务器的密钥指纹。如需验证服务器,请输入管理员 提供给您的密钥指纹。或者,如果您信任该服务器,请键入 yes 以将该服务器添加到 您的受信任服务器列表中。

完成文件传输后,输入 exit 以断开与客户端虚拟机的连接。

PuTTY

  1. 连接到与 Private Service Connect 端点位于同一 VPC 网络中的客户端 Compute Engine 实例或服务。

    例如,如果您使用 Compute Engine 实例作为客户端虚拟机,请使用 SSH 连接到 客户端虚拟机:

    gcloud compute ssh CLIENT_VM_NAME --zone=CLIENT_VM_ZONE --project=PROJECT_ID

    替换以下内容:

    • CLIENT_VM_NAME:客户端虚拟机的名称
    • CLIENT_VM_ZONE:客户端虚拟机所在的可用区
    • PROJECT_ID:项目的项目 ID 或编号 您的 Google Cloud 项目
  2. 使用 PuTTY 连接到 SFTP 服务器:

    psftp -i ~/.ssh/KEY_PAIR_NAME.ppk USERNAME@IP_ADDRESS

    替换以下内容:

    • KEY_PAIR_NAME:SSH 密钥对的名称,例如 sftp_user_key
    • USERNAME:您的 SFTP 用户名
    • IP_ADDRESS: Private Service Connect 端点的 IP 地址

    如果您是首次连接到服务器,可能会看到一条消息,指出主机密钥 未缓存。验证管理员提供给您的密钥指纹,并可以选择将密钥添加到缓存。然后,继续进行连接。

后续步骤