本文档介绍了如何更新 Cloud FTP 用户可用于连接到 SFTP 服务器的 Secure Shell (SSH) 密钥。
准备工作
从用户将用于连接到服务器的每个 SSH 密钥对中获取用户的公钥。一个用户最多可以有 10 个公钥。
如果用户没有 SSH 密钥对,请按照以下步骤生成一个。
生成 SSH 密钥对
您需要哪种密钥格式?
您需要的密钥格式取决于您用于连接到 SFTP 服务器的客户端。如需了解详情,请参阅受支持的 SFTP 客户端。
PEM 格式
-
如需创建 OpenSSH 密钥对(PEM 格式),请使用
ssh-keygen实用程序。在将连接到 SFTP 服务器的客户端机器上,运行以下命令:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/KEY_PAIR_NAME
将
KEY_PAIR_NAME替换为密钥对的名称,例如sftp_user_key。 -
提取公钥:
cat ~/.ssh/KEY_PAIR_NAME.pub
PPK 格式
-
如需创建 PuTTY 密钥对(PPK 格式),请使用
PuTTYgen工具。在将连接到 SFTP 服务器的客户端机器上,运行以下命令:
puttygen -t rsa -b 4096 -o KEY_PAIR_NAME.ppk
将
KEY_PAIR_NAME替换为密钥对的名称,例如sftp_user_key。 -
提取公钥:
puttygen -L KEY_PAIR_NAME.ppk
-
所需的角色
如需获得更新 SFTP 用户所需的权限,请让您的管理员为您授予项目的FTP Admin (roles/ftp.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含更新 SFTP 用户所需的
ftp.users.update
权限。
更新 SFTP 用户的 SSH 密钥
gcloud
如需更新 SFTP 用户的 SSH 密钥,请运行
gcloud alpha storage ftp users update 命令。
在使用下面的命令数据之前, 请先进行以下替换:
- CREDENTIAL_NAME:用于标识用户凭据的唯一名称。
- SSH_PUBLIC_KEY:用户 SSH 公钥的正文,采用 OpenSSH 格式。例如,
ssh-rsa AAAAB3NzaC1ycRexample...。 - USERNAME:SFTP 用户的用户名。
- LOCATION_ID:服务器的位置,例如
us-west1。 - SERVER_ID:服务器 ID。
如需为用户配置多个公钥,请在
credentials.json 文件中提供多个凭据。
将以下内容保存在名为 credentials.json 的文件中:
[ { "credentialName": "CREDENTIAL_NAME", "credentialType": "PUBLIC_KEY", "sshPublicKeyBody": "SSH_PUBLIC_KEY" } ]
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID \ --server=SERVER_ID --user-credentials-from-file=credentials.json
Windows (PowerShell)
gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID ` --server=SERVER_ID --user-credentials-from-file=credentials.json
Windows (cmd.exe)
gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID ^ --server=SERVER_ID --user-credentials-from-file=credentials.json
REST
如需更新 SFTP 用户的 SSH 密钥,请使用
servers.users.patch 方法。
在 updateMask 查询参数中,提供 userCredentials 字段。
在使用任何请求数据之前, 请先进行以下替换:
- PROJECT_ID:服务器的 Google Cloud 项目 ID。
- LOCATION_ID:服务器的位置,例如
us-west1。 - SERVER_ID:服务器 ID。
- USERNAME:SFTP 用户的用户名。
- CREDENTIAL_NAME:用于标识用户凭据的唯一名称。
- SSH_PUBLIC_KEY:用户 SSH 公钥的正文,采用 OpenSSH 格式。例如,
ssh-rsa AAAAB3NzaC1ycRexample...。
如需为用户配置多个公钥,请在
userCredentials 列表中提供多个凭据。
HTTP 方法和网址:
PATCH https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users/USERNAME?updateMask=userCredentials
请求 JSON 正文:
{
"userCredentials": [
{
"credentialName": "CREDENTIAL_NAME",
"credentialType": "PUBLIC_KEY",
"sshPublicKeyBody": "SSH_PUBLIC_KEY"
}
]
}
如需发送您的请求,请展开以下选项之一:
响应会识别 长时间运行的操作。 更新用户需要几秒钟的时间。客户端库
C#
如需了解如何安装和使用 Cloud FTP 的客户端库,请参阅 Cloud FTP 客户端库。 如需了解详情,请参阅 Cloud FTP C# API 参考文档。
如需向 Cloud FTP 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Cloud FTP 的客户端库,请参阅 Cloud FTP 客户端库。 如需了解详情,请参阅 Cloud FTP Go API 参考文档。
如需向 Cloud FTP 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Cloud FTP 的客户端库,请参阅 Cloud FTP 客户端库。 如需了解详情,请参阅 Cloud FTP Java API 参考文档。
如需向 Cloud FTP 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Cloud FTP 的客户端库,请参阅 Cloud FTP 客户端库。 如需了解详情,请参阅 Cloud FTP Node.js API 参考文档。
如需向 Cloud FTP 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Cloud FTP 的客户端库,请参阅 Cloud FTP 客户端库。 如需了解详情,请参阅 Cloud FTP PHP API 参考文档。
如需向 Cloud FTP 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud FTP 的客户端库,请参阅 Cloud FTP 客户端库。 如需了解详情,请参阅 Cloud FTP Python API 参考文档。
如需向 Cloud FTP 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Cloud FTP 的客户端库,请参阅 Cloud FTP 客户端库。 如需了解详情,请参阅 Cloud FTP Ruby API 参考文档。
如需向 Cloud FTP 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。