项目 SSH 密钥
SSH 是访问Equinix Metal™ 服务器的默认方法。SSH 密钥可以与您的帐户或项目关联,并添加到您配置的每台服务器。Equinix Equinix Metal还使用 SSH 密钥作为 SOS/OOB 控制台的身份验证。
一个项目 SSH 密钥专用于单个项目,默认情况下,它会包含在部署到特定项目的服务器上。如果您不想在共享服务器上使用个人 SSH 密钥,则此选项非常有用。
生成项目 SSH 密钥
要将 SSH 密钥与Equinix Metal一起使用,首先在本地计算机上生成公钥和私钥对,然后将公钥与Equinix Metal项目关联。
要在 Linux、Mac 和现代 Windows 系统上生成 SSH 密钥对,请使用 ssh-keygen 命令。注意:我们建议您为密钥对指定唯一的 SSH 密钥名称和位置。这将确保您不会覆盖任何现有的 SSH 密钥。
ssh-keygen -t ed25519 -f ~/.ssh/<proj_key_name>
对于不支持 Ed25519 的旧机器,支持 RSA 密钥,建议最小密钥大小为 2048 位。
ssh-keygen -t rsa -b 2048 -f ~/.ssh/<proj_key_name>
公钥名为 <proj_key_name>.pub。您需要将此密钥上传到 Equinix Metal 控制台。同一目录下的另一个密钥文件 <proj_key_name> 是私钥。请勿共享您的私钥。
注意 - 如果您使用的是较旧的 Windows 版本,其中不包含内置的 SSH 服务器和客户端,则需要下载并配置第三方应用程序,例如 PuTTY 来 生成密钥 并通过 SSH 连接到您的服务器。
向您的项目添加 SSH 密钥
- Console
- API
您可以在项目的“项目设置”页面的“SSH 密钥”选项卡上向项目添加 SSH 密钥。

添加 SSH 密钥后,它将出现在项目的 SSH 密钥列表中。如果需要重命名或更新密钥,请点击编辑。
要通过 API 将 SSH 密钥添加到项目中,请向 /projects/{id}/ssh-keys 端点发送 POST 请求。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/ssh-keys" \
-d '{
"label": "<string>",
"key": "<ssh_public_key>"
} '
如果需要更新 SSH 密钥,请向 /ssh-keys/{id} 端点发送 PUT 请求。您可以更新 "label"、"key" 或两者都更新。
curl -X PUT \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/ssh-keys/{id}" \
-d '{
"label": "<string>",
"key": "<ssh_public_key>"
} '
项目 SSH 密钥 - 配置服务器
当您配置服务器时,您的所有用户帐户 SSH 密钥、团队成员的 SSH 密钥以及项目 SSH 密钥都会默认添加到服务器中,从而提供对该服务器的授权访问权限。您可以覆盖此默认设置,并指定在配置新服务器时要添加的密钥。
- Console
- API
在控制台中进行配置时,可用的项目 SSH 密钥会显示在“可选设置”中的“SSH 密钥”选项卡上。

选择要添加到服务器的密钥。
注意:如果所有密钥(项目、个人和协作者)均未选中,则默认情况下会将所有密钥添加到服务器。控制台无法在不使用 SSH 密钥的情况下进行配置。要使用 API 进行配置,请使用 SSH 密钥。
要自定义使用 API 配置服务器时要包含哪些项目 SSH 密钥,请在向 projects/{id}/devices 端点发送的 POST 请求中包含 "project_ssh_keys" 参数。这将覆盖默认行为(即向服务器添加所有 SSH 密钥),而仅添加指定的 SSH 密钥。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/devices" \
-d '{
"metro": "<metro_code>",
"plan": "<server_type>",
"operating_system": "<os_code>",
"project_ssh_keys": [
<uuid>
]
}'
值得注意的身体参数:
"project_ssh_keys"- An array containing a list of UUIDs of the Project's SSH keys used to authorize access this server. These keys will also appear in the device metadata.
您还可以使用 "ssh_keys" 参数将非 Equinix Metal 上传和管理的 SSH 公钥添加到服务器。这些密钥将与 "project_ssh_keys" 定义的密钥一起添加到服务器,或者说,是在默认添加所有可用 SSH 密钥之外的额外添加。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/devices" \
-d '{
"metro": "<metro_code>",
"plan": "<server_type>",
"operating_system": "<os_code>",
"ssh_keys": [
{
"key": "<ssh_public_key>",
"label": "<string>"
}
]
}'
值得注意的身体参数:
"ssh_keys"- An array of SSH key objects that will be added to the server to authorize SSH access to it. These keys will also appear in the device metadata.
如果未指定任何 SSH 密钥("user_ssh_keys"、"project_ssh_keys" 和 "ssh_keys" 均为空列表或省略),则会包含所有可用的用户 SSH 密钥、项目 SSH 密钥和团队成员 SSH 密钥。这是默认行为。
无需 SSH 密钥的配置
要配置没有 SSH 密钥的服务器,您必须在向 projects/{id}/devices 端点发出的 POST 请求中显式包含 "no_ssh_keys" 参数。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/devices" \
-d '{
"metro": "<metro_code>",
"plan": "<server_type>",
"operating_system": "<os_code>",
"no_ssh_keys": true
}'
值得注意的身体参数:
"no_ssh_keys"- Boolean that overrides default behavior of attaching user, team member, and Project SSH keys to a server and provisions it without any authorized SSH access.
项目 SSH 密钥后期配置
要查看已配置服务器上有哪些密钥:
- Console
- CLI
- API
您可以在 Equinix Metal 控制台的服务器详细信息页面的“SSH 密钥”选项卡中查看特定服务器上的 SSH 密钥。

在服务器配置时添加到服务器的 SSH 密钥可以通过 CLI 使用 metal device get 命令检索,并添加 --output 标志以指定 JSON 输出。密钥列表位于响应中的 ssh-keys 对象内。
metal device get -i <device_id> -o json
您还可以通过向 /devices/{id}/ssh-keys 端点发送 GET 请求,从 API 获取服务器的 SSH 密钥。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' \
"https://api.equinix.com/metal/v1/devices/{id}/ssh-keys"
您可以随时向项目中添加 SSH 密钥,但通过控制台或 API 添加到项目的密钥不会自动添加到服务器。Equinix Metal 不会在已配置的服务器上保留任何代理或进程来执行此操作。要授予访问权限,您必须将 SSH 密钥添加到服务器本身。
如果您添加要用于已配置服务器的密钥,请在将新密钥添加到控制台时勾选将新密钥与特定服务器或所有服务器关联的选项。此选项也只能通过Equinix Metal控制台使用。

这不会授权直接通过 SSH 访问服务器,但允许在登录和使用 SOS/OOB 控制台时使用新的 SSH 密钥。然后,您可以使用 SOS/OOB 控制台将新的 SSH 密钥添加到服务器上的授权密钥中。
删除项目 SSH 密钥
- Console
- CLI
- API
您可以在“项目设置”页面的“SSH 密钥”选项卡中移除项目 SSH 密钥。点击要移除的密钥旁边的“删除”按钮。该 SSH 密钥将不会添加到您在此项目中配置的任何后续服务器中。

您可以使用 metal ssh-key delete 命令从您的用户帐户中删除 SSH 密钥。
metal ssh-key delete --id <SSH-key_UUID>
SSH 密钥不会添加到您配置的任何未来服务器中。
在 API 中,可以通过向 /ssh-keys/{id} 端点发送 DELETE 来从您的帐户中删除 SSH 密钥。
curl -X DELETE \
-H 'X-Auth-Token: <API_TOKEN>' \
"https://api.equinix.com/metal/v1/ssh-keys/{id}"
在配置时,密钥将不再添加到服务器。
注意:通过控制台或 API 从您的帐户或项目中移除的密钥不会自动从服务器中删除。Equinix Metal 不会在已配置的服务器上保留任何代理或进程来执行此操作。要撤销访问权限,您必须手动从服务器中删除 SSH 密钥。