SSH 密钥
为了安全地访问和管理您的Equinix Metal™ 服务器,请将 SSH 密钥添加到您的帐户或项目。SSH 是访问Equinix Metal服务器的默认方法。SSH 密钥会添加到您配置的每台服务器。Equinix Equinix Metal还使用 SSH 密钥作为 SOS/OOB 控制台的身份验证。
生成 SSH 密钥
要将 SSH 密钥与Equinix Metal™ 一起使用,您必须首先在本地机器上生成公钥和私钥对,然后将公钥添加到您的Equinix Metal帐户或项目中。
要在本地计算机上生成 SSH 密钥对,请执行以下操作:
-
在命令提示符中输入
ssh-keygen命令以生成 SSH 密钥对。ssh-keygen命令在 Linux、Mac 和较新的 Windows 版本上均受支持。ssh-keygen -t ed25519如果您的本地计算机或Metal服务器的操作系统不支持 Ed25519 密钥,请使用建议的最小密钥大小为 2048 位的 RSA 密钥。
ssh-keygen -t rsa -b 2048 -
按照提示生成 SSH 密钥。按回车键保存密钥并接受默认位置和密钥名称。 注意:如果这是您的第一个 SSH 密钥,建议您接受默认的位置和密钥名称。
-
使用密码:密码并非强制输入,但它能提供额外的安全保障。如果您决定使用密码,则每次使用 SSH 访问服务器时都需要输入密码。如果您不想使用密码,请按 Enter 键将其留空。
-
密钥生成完成后,如果您接受默认位置,则公钥和私钥 SSH 密钥将保存在以下路径中:
- Linux 上的
/home/<name>/.ssh/<key-name>.pub /Users/<name>/.ssh/<key-name>.pub在 Mac 上- 在Windows上
C:\Users\<name>/.ssh/<key_name>.pub
- Linux 上的
您需要将此密钥上传到 Equinix Metal 控制台。有关将密钥添加到 Metal 控制台的更多信息,请参阅将您的 SSH 密钥添加到您的帐户。同一目录下的另一个密钥文件 <key_name> 是私钥。请勿与任何人共享您的私钥。
注意:如果您使用的是较旧的 Windows 版本,其中不包含内置的 SSH 服务器和客户端,则需要下载并配置第三方应用程序,例如 PuTTY 来 生成密钥 并通过 SSH 连接到您的服务器。
将 SSH 密钥添加到您的帐户
- Console
- CLI
- API
在本地计算机上创建 SSH 密钥后,您就可以将公钥添加到Equinix Metal帐户了。
要将您的公钥添加到您的Equinix Metal帐户,请执行以下操作:
-
在控制台右上角,点击您的用户个人资料 > 我的个人资料
-
点击“SSH 密钥”选项卡,打开您用户配置文件的个人 SSH 密钥。
-
点击**+ 添加新密钥**,向您的帐户添加新的 SSH 密钥。

-
在您的本地计算机上,打开
<key_name.pub>文件并复制其内容。 -
将内容粘贴到“公钥”字段中。
-
在“为您的密钥命名”字段中输入密钥的名称。
-
要将密钥与其他服务器关联,请使用“搜索设备”文本框查找设备或从列表中选择设备。此选项也仅可通过 Equinix Metal 控制台使用。
注意:如果您选择的设备已关联密钥,则会弹出一条消息,告知您该服务器已存在密钥。请取消选中该设备的复选框。
-
点击全选复选框,将列表中的所有服务器与该密钥关联起来。
-
点击添加 SSH 密钥。添加 SSH 密钥后,该密钥将出现在“SSH 密钥”选项卡中的 SSH 密钥列表中。
-
点击编辑以重命名密钥或更新密钥。
您可以使用 metal ssh-key create 命令为您的用户添加 SSH 密钥。在 --key 标志中输入完整的 SSH 公钥字符串,在 --label 标志中输入名称或其他易于理解的描述。
metal ssh-key create --key <ssh_public_key> --label <string>
如果需要更新 SSH 密钥,可以使用 metal ssh-key update 命令。您可以更新 --label、--key 或两者都更新。
metal ssh-key update -i <SSH-key_UUID> --key <ssh_public_key> --label <string>
您可以通过向 Equinix Metal API 的 /ssh-keys 端点发送 POST 请求,将公钥添加到您的帐户。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/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 密钥都会添加到该服务器。SSH 密钥提供对服务器的授权访问。
- Console
- API
要在配置服务器时覆盖默认值,您必须指定希望服务器可以访问的 SSH 密钥。
要指定 SSH 密钥,请执行以下操作:
-
在控制台中,转到“裸金属”选项。 > 部署 > 按需。
-
点击“可选设置” > SSH密钥。
-
查看项目、个人和合作者键并做出选择。
-
点击选择所有密钥以允许所有已授权的 SSH 密钥访问服务器。

注意:如果所有密钥(项目、个人和协作者)均未选中,则默认情况下会将所有密钥添加到服务器。没有 SSH 密钥,您将无法在控制台中进行配置。要使用 API 进行配置,请使用 SSH 密钥。
要自定义使用 API 配置服务器时要包含哪些 SSH 密钥,请在向 projects/{id}/devices 端点发送的 POST 请求中包含 "user_ssh_keys" 或 "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>",
"user_ssh_keys": [
<uuid>
],
"project_ssh_keys": [
<uuid>
]
}'
值得注意的身体参数:
"user_ssh_keys"- 一个数组,其中包含用于授权访问此服务器的用户帐户 SSH 密钥和团队成员 SSH 密钥的 UUID 列表。这些密钥也会出现在设备元数据中。用户必须是项目或组织的成员。"project_ssh_keys"- 一个数组,其中包含用于授权访问此服务器的项目 SSH 密钥的 UUID 列表。这些密钥也会出现在设备元数据中。
您还可以通过在向 projects/{id}/devices 端点发送的 POST 请求中使用 "ssh_keys" 请求体参数,将非 Equinix Metal 上传和管理的公共 SSH 密钥添加到服务器。这些密钥将与 "project_ssh_keys" 和 "user_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"- 一个 SSH 密钥对象数组,这些密钥对象将被添加到服务器以授权对服务器的 SSH 访问。这些密钥也会出现在设备元数据中。
默认情况下,如果没有指定 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"- 布尔值,用于覆盖默认行为,即不将用户、团队成员和项目 SSH 密钥附加到服务器,也不进行任何授权的 SSH 访问。在请求正文中将"no_ssh_keys"设置为true。
SSH 密钥后配置
要查看服务器上配置的可用密钥,请执行以下操作:
- Console
- CLI
- API
-
在控制台中,转到“裸机服务器”选项卡。 > 管理。
-
选择您想要查看的服务器。
-
点击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 密钥添加到您的帐户中的说明将 SSH 密钥添加到您的帐户。但是,通过控制台或 API 添加到您的帐户或项目中的密钥不会自动添加到服务器。Equinix Metal 不会在已配置的服务器上保留任何代理或进程来执行此操作。要授予访问权限,您必须将 SSH 密钥添加到服务器本身。
如果您要添加一个用于已配置服务器的密钥,请在将其添加到控制台时选中“将新密钥关联到特定服务器或所有服务器”选项。这不会直接授权对服务器的 SSH 访问,但允许在登录和使用 SOS/OOB 控制台 时使用新的 SSH 密钥。然后,您可以使用 SOS/OOB 控制台将新的 SSH 密钥添加到服务器上的已授权密钥列表中。

此选项也仅可通过Equinix Metal控制台使用。
使用 SSH 连接
要通过 SSH 进入您的服务器,请运行以下命令:
ssh root@<your_public_ipv4>
注意: Equinix Metal服务器默认禁用 SSH 密码验证。
删除 SSH 密钥
- Console
- CLI
- API
您可以在 Equinix Metal 控制台的用户个人资料中,通过“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 密钥。