一条命令,为可信协作者创建一个有时限、用完自动删除的临时 SSH 管理员账号。
linux-temp-admin 不需要分享 root 密码,也不会在服务器保存邀请私钥。它会创建临时账号、输出可私聊转发的邀请包,并在到期时自动撤销账号、SSH key 和 sudo 授权。
程序是一个支持 glibc 和 musl 的静态二进制,适用于 amd64 和 arm64 Linux。账号、SSH 和定时任务操作仍会调用系统已有的标准管理工具。
中文 | English
在支持 pipefail 的 shell 中运行:
set -o pipefail
curl -fsSL https://dl.ll.cd/linux-temp-admin/install.sh | /usr/bin/sudo /bin/sh &&
/usr/bin/sudo /usr/local/sbin/linux-temp-admin invite --sudo工具随后会:
- 创建一个随机命名的临时账号;
- 生成一次性 SSH key,并在终端显示邀请包;
- 默认授予免密 sudo,并在 24 小时后自动删除账号;
- 在创建前检查当前 sshd 配置:明确阻止登录就拒绝,无法完整判断则如实标记
UNVERIFIED。
快速入口从官方镜像取得安装脚本并交给 root shell。set -o pipefail 会传播 curl 失败,因此安装失败后不会继续创建邀请;它不认证脚本本身,也不能阻止已经收到的部分脚本开始执行。安装器启动后,下载的二进制仍会经过 SHA-256 和 ed25519 签名验证。需要在执行前认证安装脚本时,请使用高保证首次安装流程。
- Linux 5.3 或更高版本,amd64 或 arm64;
- 主要支持 Debian、Ubuntu、RHEL、Rocky、AlmaLinux、Fedora 和常见宝塔环境;
- Alpine 和 Arch Linux 为尽力支持;
- 当前用户能够通过
/usr/bin/sudo取得 root 权限; - 安装器需要 curl、OpenSSL 3、sha256sum 和 timeout。
安装后建议先运行:
/usr/bin/sudo /usr/local/sbin/linux-temp-admin doctordoctor 会检查依赖、内核能力、包管理器、sudoers、init 系统、SSH 端口和公钥登录条件。
快速入口已经创建了第一个邀请。以后可以单独运行:
/usr/bin/sudo /usr/local/sbin/linux-temp-admin invite --sudo交互流程会显示账号、Host、端口、有效期、sudo 状态和登录验证结果,并输出一次性的私钥保存命令。服务器只保存公钥,私钥不会落盘。
把完整邀请包通过可信私聊发给协作者。对方保存私钥后,使用邀请头部的 Host、Port 和 User 登录,例如:
ssh -i ./xxvcc-a1b2c3d4e5.key -p 22 xxvcc-a1b2c3d4e5@203.0.113.10邀请包中的真实私钥只显示一次,不要发送到群聊、工单、Notion 或公开页面。
# 查看全部临时账号
/usr/bin/sudo /usr/local/sbin/linux-temp-admin status
# 从列表选择并撤销
/usr/bin/sudo /usr/local/sbin/linux-temp-admin revoke
# 直接撤销指定账号
/usr/bin/sudo /usr/local/sbin/linux-temp-admin revoke --user xxvcc-a1b2c3d4e5默认会在 24 小时后自动删除账号、家目录、SSH key、sudo 授权和本工具创建的 sshd 例外。即使启用了自动删除,用完后也应立即手动撤销。
/usr/bin/sudo /usr/local/sbin/linux-temp-admin # 交互菜单
/usr/bin/sudo /usr/local/sbin/linux-temp-admin status # 查看账号状态
/usr/bin/sudo /usr/local/sbin/linux-temp-admin doctor # 检查当前主机
/usr/bin/sudo /usr/local/sbin/linux-temp-admin upgrade # 验签升级
/usr/bin/sudo /usr/local/sbin/linux-temp-admin cleanup-expired --compact
/usr/bin/sudo /usr/local/sbin/linux-temp-admin uninstall # 卸载并处理受管账号界面默认中文。第一次交互运行时可以选择中文或 English,之后可在菜单中切换;单次运行也可以加 --lang zh 或 --lang en。
指定 12 小时有效期:
/usr/bin/sudo /usr/local/sbin/linux-temp-admin invite --sudo --hours 12创建不带 sudo 的普通账号:
/usr/bin/sudo /usr/local/sbin/linux-temp-admin invite --no-sudo指定 Host、端口或用户名前缀:
/usr/bin/sudo /usr/local/sbin/linux-temp-admin invite --host admin.example.com --port 2222 --prefix ops --sudo服务器禁止公钥登录时,只为新账号创建独立 sshd 例外:
/usr/bin/sudo /usr/local/sbin/linux-temp-admin invite --sudo --fix-sshd该操作不会修改 sshd 全局策略,并会在撤销账号时删除对应例外。自动化调用、密码登录、永久账号和完整故障处理见管理员指南。
--sudo授予的是 NOPASSWD sudo,基本等同完整 root 权限,只能发给可信对象;- 临时管理员取得 root 后可以自行建立其他持久化,本工具无法在撤销时自动清理这些外部改动;
- 邀请私钥只显示一次,应通过可信私聊交付,并在使用结束后立即撤销;
- 官方镜像
https://dl.ll.cd/linux-temp-admin是默认下载源,只有传输故障才会从 GitHub 重新下载完整套件;已经取得有效镜像索引时仍固定同一版本,校验和、签名或版本失败会立即停止; - stdout 不是终端时默认拒绝输出私钥,脚本化使用必须显式确认输出通道安全;
- 不要手工修改
/var/lib/linux-temp-admin中的登记数据。
详细保证、威胁边界和故障处理见安全模型。安全漏洞请按 SECURITY.md 私下报告。
许可证:MIT,详见 LICENSE。