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 密钥将保存在以下路径中:
/home/<name>/.ssh/<key-name>.pubon Linux/Users/<name>/.ssh/<key-name>.pubon MacC:\Users\<name>/.ssh/<key_name>.pubon Windows
您需要将此密钥上传到 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"- An array containing a list of UUIDs of your user account's SSH keys and team members SSH keys used to authorize access to this server. These keys will also appear in the device metadata. The users must be members of the project or organization."project_ssh_keys"- An array containing a list of UUIDs of the Project's SSH keys used to authorize access to this server. These keys will also appear in the device metadata.
您还可以通过在向 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"- 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. Set the"no_ssh_keys"totruein the body of the request.
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 密钥。