用户和服务账号可以使用 SSH 公钥向 Secure Source Manager 代码库进行身份验证。本页介绍了如何生成 SSH 密钥对,然后将其添加为 Secure Source Manager 网页界面中的身份验证方法。
Secure Source Manager 支持 RSA、ECDSA 和 Ed25519 SSH 密钥类型。
所需的角色
如需获得使用 SSH 公钥进行身份验证所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
如需为用户添加 SSH 密钥,请执行以下操作:
在 Secure Source Manager 实例上授予 Secure Source Manager Instance Accessor (
roles/securesourcemanager.instanceAccessor) 角色 -
如需为服务账号添加 SSH 密钥,请执行以下操作:
-
Secure Source Manager Instance Manager (
roles/securesourcemanager.instanceManager) 在 Secure Source Manager 实例上 -
服务账号的 Service Account User (
roles/iam.serviceAccountUser) 角色
-
Secure Source Manager Instance Manager (
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含使用 SSH 公钥进行身份验证所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需使用 SSH 公钥进行身份验证,您需要具备以下权限:
-
在 Secure Source Manager 实例上securesourcemanager.sshkeys.createAny -
如需为服务账号分配 SSH 密钥,请执行以下操作:
在服务账号上iam.serviceAccounts.actAs
如需了解如何授予 Secure Source Manager 角色,请参阅使用 IAM 进行访问权限控制和向用户授予实例访问权限。
生成密钥对
SSH 密钥对由位于本地系统上的私钥和您在 Google Cloud注册的公钥组成。
Linux 或 macOS
在本地系统上安装 OpenSSH。
在命令提示符后输入以下内容:
ssh-keygen -t KEY_TYPE -C "USER_EMAIL"其中:
- USER_EMAIL 是您的电子邮件地址。
- KEY_TYPE 是
rsa、ecdsa或ed25519中的一个。
例如:
ssh-keygen -t rsa -C "user@example.com"出现提示时,输入公钥文件的位置和文件名。 如需接受默认位置和文件名,请按 Enter 键。
出现提示时,请将密码留空,然后按 Enter 键。
Windows
如果没有,请在本地系统上安装 OpenSSH 客户端(包含在 Windows 10 及更高版本中)和 Git for Windows。以下说明使用 OpenSSH 和 Git for Windows。
在 PowerShell 或命令提示符中,运行以下命令:
ssh-keygen -t KEY_TYPE -C "USER_EMAIL"其中:
- USER_EMAIL 是您的电子邮件地址。
- KEY_TYPE 是
rsa、ecdsa或ed25519中的一个。
例如:
ssh-keygen -t rsa -C "user@example.com"出现提示时,输入公钥文件的位置和文件名。 如需接受默认位置和文件名(“%USERPROFILE%.ssh”),请按 Enter 键。
出现提示时,请将密码留空,然后按 Enter 键。
将 SSH 密钥添加到 SSH 代理
如需使用您生成的 SSH 密钥对,请将您的密钥添加到 SSH 代理。如果您未将密钥保存在默认位置,则将其添加到 SSH 代理有助于 SSH 找到您的密钥。
Linux 或 macOS
在后台启动
ssh-agent:eval "$(ssh-agent -s)"该命令会返回代理进程 ID (PID),例如:
Agent pid 3245根据您的环境,您可能需要使用其他命令,例如:
- 如需使用 root 访问权限,请在启动
ssh-agent之前运行sudo -s -H。 - 如需直接运行
ssh-agent,请使用exec ssh-agent bash或exec ssh-agent zsh。
- 如需使用 root 访问权限,请在启动
将 SSH 私钥添加到
ssh-agent。ssh-add ~/.ssh/FILENAME其中,
FILENAME是您的私钥文件的名称,例如id_rsa或id_ed25519。
Windows
启动
ssh-agent。如果您使用的是 Git Bash,请启动
ssh-agent:eval "$(ssh-agent -s)"如果您使用的是 PowerShell 或命令提示符,请启动
ssh-agent服务。在 PowerShell 中,运行以下命令:Set-Service ssh-agent -StartupType Automatic; Start-Service ssh-agent
将 SSH 私钥添加到
ssh-agent。如果您使用的是 Git Bash:
ssh-add ~/.ssh/FILENAME如果您使用的是 PowerShell 或命令提示符:
ssh-add $env:USERPROFILE\.ssh\FILENAME
其中,
FILENAME是您的私钥文件的名称,例如id_rsa或id_ed25519。
为用户添加 SSH 密钥
- 在 Secure Source Manager 网页界面中,从实例或代码库页面点击 更多选项菜单。
点击用户 SSH 密钥。
系统会打开用户 SSH 密钥页面,并显示您创建的所有现有密钥的列表。
在用户 SSH 密钥页面中,点击添加密钥。
在添加 SSH 密钥页面中,为您的密钥输入以下值:
- 标题:为密钥添加描述性标题。
SSH 公钥:粘贴您的公钥字符串。如需获取公钥字符串,请在文本编辑器中打开公钥文件 (
FILENAME.pub),或运行以下命令之一:Linux 或 macOS
cat ~/.ssh/FILENAME.pubWindows
cat $env:USERPROFILE\.ssh\FILENAME.pub将
FILENAME替换为您的密钥文件的名称。
您可以使用 SSH 密钥对任何 Secure Source Manager 代码库进行身份验证,前提是您对该代码库拥有所需的权限。
为服务账号添加 SSH 密钥
如需以程序化方式访问您的代码库,您可以为服务账号添加 SSH 密钥。
- 如果您还没有要使用的服务账号,请创建一个服务账号。
- 在 Secure Source Manager 网页界面中,点击 更多选项菜单。
- 点击服务账号 SSH 密钥。系统会打开服务账号 SSH 密钥 页面,并显示您添加的所有现有密钥的列表。
- 在服务账号 SSH 密钥页面上,点击添加密钥。
在添加服务账号 SSH 密钥页面中,为您的密钥输入以下值:
- Title:密钥的描述性标题
服务账号:您要使用 SSH 密钥的服务账号的电子邮件地址,格式为
SA_NAME@PROJECT_ID.iam.gserviceaccount.com地点
SA_NAME是服务账号名称。PROJECT_ID是创建服务账号的项目 ID。
SSH 公钥:您的 SSH 公钥。如需了解如何生成 SSH 密钥对,请参阅生成密钥对。
如果服务账号与 Secure Source Manager 实例不在同一项目中,请向 Secure Source Manager 的服务代理授予您要使用的服务账号的以下角色或权限之一:
iam.serviceAccounts.signJwt权限- Service Account Token Creator (
roles/iam.serviceAccountTokenCreator) 角色
运行以下命令,向您的 Secure Source Manager 服务账号添加 IAM 政策,以向其授予 Service Account Token Creator 角色。
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \ --member="serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"其中,SERVICE_ACCOUNT 是您要使用的服务账号,INSTANCE_PROJECT_NUMBER 是 Secure Source Manager 实例的项目编号。
SERVICE_ACCOUNT 的格式应为数字服务账号 ID 或电子邮件地址,例如:123456789876543212345 或 my-iam-account@somedomain.com。