基于Zig的GTK4 SSH-askpass
在Gentoo树中的每个ssh-askpass都依赖于X11或完整的KDE堆栈,因此我使用Zig 0.16和GTK4编写了自己的实现,并手动编写了绑定,以避免将X包含在构建中。我在我的笔记本电脑上运行的是硬化的Gentoo,大部分时间我从不使用ssh-askpass,因为我对大多数系统使用的是-sk密钥。然而,确实有一类情况我需要它,那就是当一个程序需要一个常规ED25519密钥的SSH密钥密码短语,但没有终端来读取它时。常见的情况是go get,或者一般的go工具链在构建过程中通过SSH获取私有模块,而该构建在没有TTY的环境中运行。OpenSSH不能在管道上提示,因此它运行SSH_ASKPASS指向的内容,并将密码提示放在一个窗口中。多年来,我对此没有任何安装,并且不得不以变通方式解决这些场景。这主要是因为Gentoo的Portage提供: ~ emerge -s ssh-askpass [ 搜索键的结果:ssh-askpass ] 正在搜索... * kde-plasma/ksshaskpass 最新可用版本:6.6.6 最新安装版本:[未安装] 文件大小:32 KiB 主页:https://kde.org/plasma-desktop https://invent.kde.org/plasma/ksshaskpass 描述:与KDE钱包集成的ssh-askpass实现 许可证:GPL-2 * lxqt-base/lxqt-openssh-askpass 最新可用版本:2.4.0 最新安装版本:[未安装] 文件大小:19 KiB 主页:https://lxqt-project.org/ https://github.com/lxqt/lxqt-openssh-askpass/ 描述:LXQt OpenSSH用户密码提示工具 许可证:LGPL-2.1 LGPL-2.1+ * net-misc/gnome-ssh-askpass 最新可用版本:10.0_p1 最新安装版本:[未安装] 文件大小:1,927 KiB 主页:https://www.openssh.com/ 描述:用于OpenSSH的基于GTK的密码对话框 许可证:BSD GPL-2 * net-misc/ssh-askpass-fullscreen 最新可用版本:1.2 最新安装版本:[未安装] 文件大小:81 KiB 主页:https://github.com/atj/ssh-askpass-fullscreen 描述:用GTK2编写的小型SSH Askpass替代品 许可证:GPL-2+ * net-misc/x11-ssh-askpass 最新可用版本:1.2.4.1-r2 最新安装版本:[未安装] 文件大小:30 KiB 主页:https://github.com/sigmavirus24/x11-ssh-askpass 描述:用于OpenSSH的基于X11的密码对话框 许可证:HPND [ 找到的应用程序:5 ] 每个应用程序至少都有一个我不愿意容忍的不便。我的系统使用全局-X USE标志,因此任何需要X11的程序在我进一步查看之前都被排除。在这五个中,kde-plasma/ksshaskpass是唯一一个没有X11依赖的,这本应使它成为一个显而易见的选择,但问题是随之而来的其他一切。作为一个Sway用户,我不想让机器上有一个完整的KDE堆栈仅仅是为了输入偶尔的密码,而这正是ksshaskpass安装时所拉来的: ~ # emerge -a kde-plasma/ksshaskpass 这些是将会合并的包,顺序如下: 计算依赖关系... 完成! 依赖解析耗时1.18秒(回溯:0/20)。 [ ebuild N ] kde-frameworks/kf-env-6 [ ebuild N ] dev-libs/plasma-wayland-protocols-1.21.0 USE = "-test" [ ebuild N ] dev-libs/qtkeychain-0.16.0 USE = "-keyring -test" [ ebuild N ] kde-frameworks/ksecretd-services-6.27.0 USE = "(-systemd)" [ ebuild N ] kde-frameworks/breeze-icons-6.27.0 USE = "-test" [ ebuild N ] kde-frameworks/ki18n-6.27.0 USE = "-debug -test" PYTHON_SINGLE_TARGET = "python3_14 -python3_12 -python3_13" [ ebuild N ] kde-frameworks/kconfig-6.27.0 USE = "dbus -debug -qml -test" [ ebuild N ] kde-frameworks/kcoreaddons-6.27.0 USE = "dbus -debug -test" [ ebuild N ] kde-frameworks/kwidgetsaddons-6.27.0 USE = "-debug -designer -test" [ ebuild N ] kde-frameworks/kdbusaddons-6.27.0 USE = "-X -debug -test" [ ebuild N ] kde-frameworks/kwindowsystem-6.27.0 USE = "wayland -X -debug -test" [ ebuild N ] app-crypt/qca-2.3.10-r1 USE = "ssl -botan -debug -doc -examples -gcrypt -gpg -logger -nss -pkcs11 -sasl -softstore -test" [ ebuild N ] kde-frameworks/karchive-6.27.0 USE = "crypt zstd -debug -test" [ ebuild N ] kde-frameworks/kguiaddons-6.27.0 USE = "dbus wayland -X -debug -test" [ ebuild N ] kde-frameworks/kdoctools-6.27.0 USE = "nls -debug -test" [ ebuild N ] kde-frameworks/kcolorscheme-6.27.0 USE = "-debug" [ ebuild N ] kde-frameworks/kcrash-6.27.0 USE = "-X -debug -test" [ ebuild N ] kde-frameworks/knotifications-6.27.0 USE = "-debug" [ ebuild N ] kde-frameworks/kservice-6.27.0 USE = "man -debug -test" [ ebuild N ] kde-frameworks/kwallet-6.27.0 USE = "-debug -minimal -test" [ ebuild N ] kde-frameworks/kwallet-runtime-6.27.0 USE = "(keyring) (legacy-kwallet) man -X -debug -gpg -test" [ ebuild N ] kde-plasma/ksshaskpass-6.6.6 USE = "-debug" 你想合并这些包吗?[是/否] lxqt-base/lxqt-openssh-askpass是下一个,它完全需要X。除此之外,它还拉入了一些KDE框架包和一个带有X支持的Qt,这与我系统上已经存在的dev-qt/qtbase发生了冲突。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡