Atuin 账户管理完全指南atuin account 命令族的注册、登录、密钥与账户安全实践【免费下载链接】atuin✨ Making your shell magical项目地址: https://gitcode.com/gh_mirrors/at/atuin导读本篇是 Atuinshell 历史同步工具的命令参考文档《account》的完整解读与源码级扩展。Atuin 将你的 shell 历史以端到端加密的方式同步到服务器而atuin account是管理这套同步账户的入口命令族覆盖注册、登录、注销、修改密码、删除账户以及关联 Atuin Hub 的全生命周期操作。读完本文你将掌握atuin account全部 6 个子命令的参数语义、交互式与 headless无头/脚本化两种使用模式理解加密密钥在账户体系中的核心地位并能安全地在多台机器间登录与迁移。atuin account概览账户命令的统一入口atuin accountatuin account负责管理你的同步账户。在 Atuin 中账户管理经历了一次演进早期版本只有atuin register、atuin login、atuin logout三个扁平命令如今它们被统一收敛到atuin account子命令族之下同时保留旧命令作为简写别名atuin register等价于atuin account registeratuin login等价于atuin account loginatuin logout等价于atuin account logout从源码看这个别名关系是显式映射的。sync.rs 中的Sync子命令枚举同时定义了Login(account::login::Cmd)、Logout、Register(account::register::Cmd)等变体而account模块下又各自挂载了对应实现crates/atuin/src/command/client/account/目录中的register.rs、login.rs、logout.rs、change_password.rs、delete.rs、link.rs六个文件与文档子命令一一对应。使用旧命令还是新命令完全取决于个人习惯两者行为一致。下文统一以atuin account ...形式讲解。在开始注册之前需要先了解一个前置条件如果你打算使用自托管同步服务器必须先在配置中设置sync_address参见自托管服务器搭建指南。使用 Atuin 官方同步服务则无需额外配置。atuin account register注册并生成加密密钥创建账户是使用同步功能的第一步atuin account register -u USERNAME -e EMAIL -p PASSWORDFlag说明--username/-u你想要的用户名。必须全局唯一且仅允许字母数字和连字符alphanumerics and hyphens--email/-e仅用于重要通知例如安全事件提醒--password/-p建议省略。省略后 Atuin 会交互式询问从而避免密码进入你的 shell 历史记录注册成功后Atuin自动完成登录并为你生成端到端加密密钥。请务必保存好这把密钥 —— 它是你在其他机器上登录、读取同步数据的唯一凭证。查看密钥的方式是atuin key参见atuin key。交互式与 headless 两种注册路径从 register.rs 的源码实现看注册流程会根据同步模式Hub 或 Legacy和参数提供情况分流headless 注册CI/脚本场景当--username、--email、--password三个参数同时提供时源码中required_for_headless 3并逐个检查is_some()走无交互的 v0 API 通道适合 CI 流水线。若只提供了部分参数程序会提示 Continuing with interactive registration 并退回交互流程。交互式注册省略参数时Atuin 通过or_user_input逐个提示输入 username、email并用read_user_passwordrpassword库安全地读取密码——密码输入不回显自然不会进入终端回滚缓冲区。Hub 模式的交互注册当settings.is_hub_sync()为真且参数不全时注册会委托给浏览器 OAuth 流程——你在 hub 网站上完成注册CLI 随后只负责认证from_registration: true标记。注册成功后源码会执行paseto_v4::Key::try_load_or_generate(settings.key_path)如果本地密钥文件已存在则复用否则生成新密钥并落盘。随后终端输出提醒Registration successful! Please make a note of your key (run atuin key) and keep it safe.atuin account login在另一台机器上登录在多机同步场景下新机器上的第一步是登录atuin account login -u USERNAMEFlag说明--username/-u你的用户名--password/-p省略则 Atuin 交互式询问--key/-k你的加密密钥。省略则 Atuin 交互式询问--totp-code/-t你的两步验证2FA码仅当账户启用了 2FA 时需要建议省略--password和--keyAtuin 会分别交互式询问两者这样密码和密钥都不会出现在你的 shell 历史里。登录流程完整走完 guide/sync.md 的 Login 章节描述的过程先用atuin key在已登录的机器上查到密钥再在新机器上执行atuin login -u USERNAME并依次输入密码和密钥。密钥校验登录的最后一道安全关卡登录并非拿到 session 就结束。从 login.rs 的verify_key_against_remote看登录后 Atuin 会建立SyncSession并调用keyed(key).key_valid()向服务器校验密钥能否解密数据密钥正确持久化密钥到本地密钥文件登录完成密钥错误SyncError::WrongKey交互模式下提示重新输入正确密钥可通过atuin key在已正常同步的机器上获取非交互模式或用户放弃时调用logout_wrong_key()回滚已保存的 session防止留下已登录但读不了数据的半认证状态其他错误如瞬时网络问题不阻断登录仅记录 warning用户认证已生效后续可再同步。两种同步后端Hub 与 Legacylogin.rs 区分了两种登录路径Hub 登录未提供用户名时走浏览器 OAuth 流程CLI 打印一个 URL等待用户在浏览器完成认证HubAuthSession::startwait_for_completion提供用户名时走 headless v0 API。登录后还会静默尝试将已有 CLI 账户链接到 Hubhub::link_account失败仅记 debug 日志。Legacy 登录传统同步服务器路径始终要求用户名/密码可通过 flag 提供不支持 2FA若服务器返回TwoFactorRequired会被视为异常并 bail。无论哪条路径密钥输入都支持base64 或 bip39 助记词两种格式try_from_mnemonic并且在密钥与本地已有密钥不同时会先用新密钥重新加密本地存储store.re_encrypt再覆写密钥文件。atuin account logout结束本地会话atuin account logout登出仅结束本机的登录会话你的历史数据和加密密钥仍然保留在这台机器上。实现上logout.rs 直接委托给atuin_client::logout::logout()见 logout.rs它删除 meta 存储中的 CLI session 和 Hub session若本来就没登录则提示 You are not logged in。登出不影响本地数据这一点很重要Atuin 的历史记录存储与账户会话是解耦的登出后本机历史检索照常可用只是不再同步。atuin account change-password仅更换账户密码atuin account change-passwordFlag说明--current-password/-c当前密码。省略则交互式询问--new-password/-n新密码。省略则交互式询问--totp-code/-t两步验证码仅当账户启用了 2FA 时需要关键语义该命令只修改账户密码不影响你的加密密钥其他已登录机器也不会被登出。从 change_password.rs 源码看命令会先检查settings.logged_in()随后循环调用client.change_password(...)若服务器返回TwoFactorRequired则交互式补充 2FA 码后重试成功输出 Account password successfully changed!。这里体现了 Atuin 安全模型的层次分离密码用于向服务器证明身份、获取会话加密密钥用于本地/端到端解密历史数据。两者互不干扰修改其一不影响另一个。atuin account delete删除账户与服务器端全部历史atuin account deleteFlag说明--password/-p你的密码。省略则交互式询问--totp-code/-t两步验证码仅当账户启用了 2FA 时需要删除操作会从服务器删除你的账户以及所有已同步的历史数据。⚠️警告此命令不会弹出确认提示且不可撤销你的本地历史不受影响——被删除的只是服务器上的副本。从 delete.rs 源码看流程为检查登录态 → 读取密码空密码直接报错→ 循环调用client.delete_account(password, totp)2FA 需要时交互补充→ 成功后清理 meta 存储中的 CLI session 与 Hub session输出 Your account is deleted。由于没有确认环节执行前请务必三思一旦确认服务器上同步的历史将永久丢失。如果只是想停止同步请改用atuin account logout。atuin account link关联 CLI 账户与 Atuin Hubatuin account link该命令将你的CLI 同步账户关联到Atuin Hub账户。执行后如果本地尚无 Hub 会话Atuin 会打开浏览器引导你在 Hub 完成认证CLI 打印一个认证 URL等待轮询完成随后把两个账户绑定如果你已经登录过 Hub则直接完成关联。从 link.rs 源码看命令先读取 meta 中的 CLI session token没有则报错 No CLI session found. Please log in first with atuin login再检查 Hub token两者都存在时直接link_account只有 CLI token 时先走HubAuthSession::start浏览器认证流程最后调用atuin_client::hub::link_account完成绑定输出 Successfully linked CLI account to Hub.。关联 Hub 的意义在于Hub 是 Atuin 的新一代账户体系关联后 CLI 同步账户可获得完整的 Hub 认证体验注册流程也可见于 register.rs 中关于 account has not been fully migrated to Atuin Hub 的提示逻辑。加密密钥账户体系的根基atuin key贯穿整个账户生命周期的核心概念是端到端加密密钥。所有同步数据在本地用这把密钥加密服务器只存储密文因此服务器无法窥探你的历史guide/sync.md 明确说明 All of your history is fully end-to-end encrypted。查看密钥atuin key # 输出 bip39 助记词格式 atuin key --base64 # 输出 base64 格式从 sync.rs 源码看atuin key会从settings.key_path加载paseto_v4::Key默认以助记词形式打印key.try_mnemonic()加--base64则输出key.encode()的 base64 表示。两种格式在登录时均被接受。密钥的安全红线官方文档原话强调绝不与任何人分享这把密钥Atuin 开发者永远不会向你要密钥、密码或你的 Atuin 目录内容一旦丢失任何人都无法帮你找回——服务器端只有密文。建议存入密码管理器等安全位置多机登录时新机器必须使用与首台机器相同的密钥atuin key查看否则verify_key_against_remote会拒绝登录并提示错误密钥。登录后的同步与多机流转账户就绪后同步会自动进行默认每小时同步一次可通过sync_frequency配置项调整见配置参考。需要手动触发时atuin sync # 常规同步尽量增量、节省流量 atuin sync -f # 强制全量同步发现数据缺失时使用完整的注册到多机同步流程见 Setting up Sync 指南其中与账户相关的关键路径为首台机器atuin register或atuin account register→ 记录atuin key输出 → 新机器atuin login -u USERNAME或atuin account login→ 输入密码与密钥 → 自动/手动同步。速查表atuin account 全命令一览命令作用关键参数是否影响本地数据atuin account register注册账户并自动登录、生成密钥-u用户名-e邮箱-p密码生成并保存新密钥atuin account login在另一台机器登录-u用户名-p密码-k密钥-t2FA仅写入会话与密钥文件atuin account logout结束本地会话无删除本地会话历史与密钥保留atuin account change-password仅更换密码-c当前密码-n新密码-t2FA无密钥不受影响atuin account delete删除账户与服务器端历史不可撤销-p密码-t2FA本地历史保留服务器数据清除atuin account link关联 CLI 账户与 Atuin Hub无无对应实现源码统一位于 crates/atuin/src/command/client/account/是验证本文所述行为的最权威依据。掌握这套账户命令族你就能安全、完整地管理自己的 Atuin 同步身份在多台设备间无缝流转加密历史。【免费下载链接】atuin✨ Making your shell magical项目地址: https://gitcode.com/gh_mirrors/at/atuin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考