用 Zig 编写的一个 GTK4 SSH-askpass
摘要
一位开发者用 Zig 编写了一个轻量级的基于 GTK4 的 ssh-askpass 工具,以避免在其加固的 Gentoo 系统上引入 X11 或 KDE 依赖,并使用了手写的 GTK4 绑定。
暂无内容
查看缓存全文
缓存时间: 2026/07/31 16:59
# 用 Zig 编写的 GTK4 ssh-askpass
来源:https://xn--gckvb8fzb.com/a-gtk4-ssh-askpass-in-zig/
Gentoo 软件树中的每个 ssh-askpass 都会引入 X11 或一整套 KDE 依赖,所以我用 Zig 0.16 和 GTK4 自己写了一个,并手工编写绑定,让 X 不参与构建。
我在笔记本电脑上运行 hardened Gentoo(https://xn--gckvb8fzb.com/hardened-gentoo-with-full-disk-encryption-on-the-star-labs-starbook-mk-vi/),大多数情况下我根本不会碰 ssh-askpass,因为对于大多数系统我都使用 `-sk` 密钥。不过有一种情况我确实需要它:当程序想要读取普通 ED25519 密钥的 SSH 口令短语,却没有终端可供读取时。常见场景是 `go get`,或者泛泛而言的 go 工具链,在没有 TTY 的构建过程中通过 SSH 获取私有模块。OpenSSH 无法在管道上提示输入,所以它会运行 `SSH_ASKPASS` 指向的任何程序,把口令短语提示放到窗口中。
多年来我都没有安装任何相关程序,遇到这些场景只能绕道而行。主要原因是 Gentoo 的 Portage 所提供的选择:
```
~ emerge -s ssh-askpass
[ Results for search key : ssh-askpass ]
Searching...
* kde-plasma/ksshaskpass
Latest version available: 6.6.6
Latest version installed: [ Not Installed ]
Size of files: 32 KiB
Homepage: https://kde.org/plasma-desktop https://invent.kde.org/plasma/ksshaskpass
Description: Implementation of ssh-askpass with KDE Wallet integration
License: GPL-2
* lxqt-base/lxqt-openssh-askpass
Latest version available: 2.4.0
Latest version installed: [ Not Installed ]
Size of files: 19 KiB
Homepage: https://lxqt-project.org/ https://github.com/lxqt/lxqt-openssh-askpass/
Description: LXQt OpenSSH user password prompt tool
License: LGPL-2.1 LGPL-2.1+
* net-misc/gnome-ssh-askpass
Latest version available: 10.0
相似文章
Ziggity – 一个用Zig编写的Git终端UI
Ziggity是一个受lazygit启发的用Zig编写的Git终端UI。它提供键盘驱动的界面,用于暂存、提交、分支、变基和检查历史。
我们重写了 Ghostty GTK 应用程序
Mitchell Hashimoto 详细介绍了 Ghostty 的 GTK 应用程序重写,以完全拥抱来自 Zig 的 GObject 类型系统,从而提高了稳定性、功能和内存安全性,并通过 Valgrind 验证。
Gooey:面向 Zig 的 GPU 加速 UI 框架
Gooey 是一个面向 Zig 的 GPU 加速 UI 框架,通过 Metal、Vulkan/Wayland 和 WebGPU/WASM 支持 macOS、Linux 和浏览器。它提供声明式 UI、动画、主题、无障碍和零外部依赖。
从Rust转向Zig的感受
一位经验丰富的Rust开发者分享了通过重新实现JSONPath工具来学习Zig的旅程,重点介绍了IDE支持和代码组织方面的差异。
@dreamsofcode_io: 现在正是考虑将你的 SSH 密钥放在硬件安全密钥(如 Yubikey)上的好时机。
一条推文建议将 SSH 密钥使用硬件安全密钥(如 Yubikey)进行保护,并提及 npm、PyPI 和 Crates.io 上正在活跃的跨生态系统供应链攻击(TrapDoor),该攻击涉及恶意包和窃取加密货币的恶意软件。