SSH Authentication with FIDO2¶
Compatible Nitrokeys |
|||||||
|---|---|---|---|---|---|---|---|
✓ active |
✓ active |
⨯ inactive |
⨯ inactive |
✓ active |
⨯ inactive |
⨯ inactive |
⨯ inactive |
SSH(安全外壳)是一种网络协议,用于安全访问和管理远程系统,如服务器或代码库(如 GitLab、GitHub)。它使用加密密钥对进行身份验证,允许无密码登录,安全性极高。使用 Nitrokey,私人 SSH 密钥直接生成并存储在设备上,因此永远不会离开硬件。每次登录都需要触摸 Nitrokey,增加了一个简单的物理确认,防止未经授权的访问。
Generating SSH Key¶
Insert the Nitrokey into your computer.
打开终端,创建 SSH 密钥。将``"your_comment"`` 替换为可识别的标签(如 "Nitrokey GitLab")。默认情况下,密钥是非驻留密钥,即本地密钥句柄存储在``~/.ssh/`` 中,而私钥则安全地保存在硝基上。如果希望密钥能跨系统携带,请使用``-O resident`` 选项。
ssh-keygen -t ed25519-sk -C "your_comment"或创建常驻密钥
ssh-keygen -t ed25519-sk -O resident -C "your_comment"备注
驻留密钥以后可以在另一个系统中列出和导入:
ssh-keygen -K在密钥生成过程中,可能还会要求你设置一个**密码** 。该口令会加密存储在``~/.ssh/`` 中的本地密钥句柄(不是硝基上的私钥,私钥始终安全地保存在设备内)。口令与 FIDO2 设备 PIN 不同。PIN 保护的是物理密钥本身,而口令保护的是本地 SSH 公钥文件。我们建议仅使用口令保护非本地密钥。
当要求输入文件路径时,请接受默认选项(
~/.ssh/id_ed25519_sk)或选择自定义名称,如``id_ed25519_sk_gitlab``。如果硝基键闪烁,请轻触确认操作。
最终将创建以下文件。如果您在生成密钥时指定了自定义名称,文件名可能会有所不同。
~/.ssh/id_ed25519_sk→ 私钥句柄(安全地存储在硝基上)
~/.ssh/id_ed25519_sk.pub→ 公钥文件
Adding Your Public Key¶
生成 SSH 密钥对后,必须将公钥添加到要访问的服务或服务器中。
Display your public key:
cat ~/.ssh/id_ed25519_sk.pub输出示例(请勿使用此键)::
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
复制输出结果,并将其添加到你的账户 SSH 密钥设置中。详细步骤见 GitLab <https://docs.gitlab.com/user/ssh/#add-an-ssh-key-to-your-gitlab-account> 或 GitHub <https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account>。要启用 SSH 远程服务器访问,请将公钥添加到 SSH 服务器上用户账户的``~/.ssh/authorized_keys`` 文件中。