使用 opkssh 实现 OpenID 身份验证与 SSH 连接

opkssh 是一个结合 OpenID 身份验证和 SSH 连接的工具,它能简化 SSH 密钥的管理,并提升 SSH 连接的安全性。与传统的 SSH 密钥验证方式不同,opkssh 通过 OpenID 身份验证来生成 SSH 密钥,使得用户的身份验证更加灵活与安全。

1. 安装 opkssh

opkssh 可以在 Windows、macOS 和 Linux 系统上使用。下面是详细的安装步骤:

在 Windows 上安装 opkssh

  1. 打开 PowerShell 或命令提示符。
  2. 执行以下命令,下载并安装 opkssh
curl https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-windows-amd64.exe -o opkssh.exe
  1. 下载完成后,你将获得 opkssh.exe 文件。你可以将它放在任何你想要的目录下,并通过命令行运行它。

在 macOS 上安装 opkssh

  1. 打开终端。
  2. 执行以下命令,下载并安装 opkssh
curl -L https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-osx-amd64 -o opkssh; chmod +x opkssh
  1. 这将下载 opkssh 文件并授予执行权限。你可以将其移动到 /usr/local/bin/ 目录,方便在终端中全局使用。

在 Linux 上安装 opkssh

Linux 系统支持多种架构。根据你的系统架构(x86_64 或 ARM64),选择相应的安装命令。

  • 对于 x86_64 架构的 Linux 系统
curl -L https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-linux-amd64 -o opkssh; chmod +x opkssh
  • 对于 ARM64 架构的 Linux 系统
curl -L https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-linux-arm64 -o opkssh; chmod +x opkssh

安装完成后,你可以将 opkssh 文件移动到 /usr/local/bin/ 目录,或将其保留在当前目录。

2. 使用 opkssh 进行身份验证与 SSH 登录

安装完成后,你可以开始使用 opkssh 进行身份验证和 SSH 连接。

登录并生成 SSH 密钥

  1. 在终端或命令行中运行以下命令:
opkssh login
  1. 该命令将打开一个浏览器窗口,要求你选择一个 OpenID 提供商并完成身份验证。你可以选择 Google、GitHub 等常见的 OpenID 提供商来进行登录。
  2. 登录成功后,opkssh 会在你的本地系统中生成一个 SSH 公钥文件,默认位置是 ~/.ssh/id_ecdsa。这个密钥对应的是你的 OpenID Token,凭此可以通过 SSH 连接到服务器。

默认 SSH 密钥过期时间

生成的 SSH 密钥默认会在 24 小时后过期。到期后,你需要重新运行 opkssh login 来生成新的密钥。

使用 SSH 登录

一旦密钥生成成功,你可以像使用传统 SSH 密钥一样使用它来登录到远程服务器。执行以下命令:

ssh [email protected]

使用 SFTP 进行文件传输

你还可以使用 opkssh 生成的 SSH 密钥进行 SFTP 文件传输:

sftp [email protected]

3. 自定义 SSH 密钥名称

opkssh 允许你为生成的密钥指定自定义名称,方便管理。

登录时指定自定义密钥名称

如果你希望使用特定名称的密钥,可以在执行 opkssh login 时指定密钥名称:

opkssh login -i opkssh_server_group1

使用自定义密钥进行 SSH 连接

在使用 SSH 时,你可以通过 -i 参数指定自定义的密钥文件。假设你使用了 opkssh_server_group1 作为密钥名称,可以执行以下命令:

ssh -o "IdentitiesOnly=yes" -i ~/.ssh/opkssh_server_group1.pub -i ~/.ssh/opkssh_server_group1 [email protected]

这里的 -o "IdentitiesOnly=yes" 参数会确保 SSH 仅使用指定的密钥进行身份验证,避免使用其他默认密钥进行干扰。

4. 在服务器端安装和配置 opkssh

为了让你的服务器支持使用 opkssh 进行身份验证,你需要在服务器上安装并配置它。

安装 opkssh 在服务器上

  1. 登录到你的服务器。
  2. 使用以下命令安装 opkssh
wget -qO- "https://raw.githubusercontent.com/openpubkey/opkssh/main/scripts/install-linux.sh" | sudo bash

这条命令会自动下载并安装 opkssh,并将其放置在 /usr/local/bin/ 目录中,同时配置 SSH 服务以支持 opkssh 作为附加的身份验证机制。

允许单个用户使用 opkssh 登录

如果你想允许某个用户(例如 [email protected])通过 OpenID 进行身份验证并作为 root 登录到服务器,可以执行以下命令:

sudo opkssh add root [email protected] google

允许用户组使用 opkssh 登录

如果你希望允许某个用户组(例如 ssh-users)中的所有成员通过 OpenID 进行身份验证并作为 root 登录,可以使用以下命令:

sudo opkssh add root oidc:groups:ssh-users google

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注