本文档介绍了如何更新 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"
}
]
}
如需发送您的请求,请展开以下选项之一:
该响应用于标识长时间运行的操作。 用户更新需要几秒钟的时间。 <0x