SSH Authentication with FIDO2

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

inactive

SSH(安全外壳)是一种网络协议,用于安全访问和管理远程系统,如服务器或代码库(如 GitLab、GitHub)。它使用加密密钥对进行身份验证,允许无密码登录,安全性极高。使用 Nitrokey,私人 SSH 密钥直接生成并存储在设备上,因此永远不会离开硬件。每次登录都需要触摸 Nitrokey,增加了一个简单的物理确认,防止未经授权的访问。

Generating SSH Key

  1. Insert the Nitrokey into your computer.

  2. 打开终端,创建 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
    
  3. 在密钥生成过程中,可能还会要求你设置一个**密码** 。该口令会加密存储在``~/.ssh/`` 中的本地密钥句柄(不是硝基上的私钥,私钥始终安全地保存在设备内)。口令与 FIDO2 设备 PIN 不同。PIN 保护的是物理密钥本身,而口令保护的是本地 SSH 公钥文件。我们建议仅使用口令保护非本地密钥。

  4. 当要求输入文件路径时,请接受默认选项(~/.ssh/id_ed25519_sk)或选择自定义名称,如``id_ed25519_sk_gitlab``。

  5. 如果硝基键闪烁,请轻触确认操作。

最终将创建以下文件。如果您在生成密钥时指定了自定义名称,文件名可能会有所不同。

~/.ssh/id_ed25519_sk → 私钥句柄(安全地存储在硝基上)

~/.ssh/id_ed25519_sk.pub → 公钥文件

img0

Adding Your Public Key

生成 SSH 密钥对后,必须将公钥添加到要访问的服务或服务器中。

  1. Display your public key:

    cat ~/.ssh/id_ed25519_sk.pub
    

    输出示例(请勿使用此键)::

    sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
    
  2. 复制输出结果,并将其添加到你的账户 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`` 文件中。