使用 Debian Jessie 和 GnuPG 2,每次我尝试使用 GnuPG 2 ( gpg2) 或gpg-connect-agent与 OpenPGP 智能卡(在我的情况下为 YubiKey)一起使用时,操作失败并显示一条消息
$ gpg-connect-agent --hex "scd apdu 00 f1 00 00" /bye
ERR 67108983 No SmartCard daemon <GPG Agent>
$ gpg2 --card-status
ERR 67108983 No SmartCard daemon <GPG Agent>
Run Code Online (Sandbox Code Playgroud)
使用旧版 GnuPG 1 ( gpg) 时,一切正常。
这里出了什么问题?
我正在使用 gpg-agent 和 Yubikey 来安全地存储我的 GPG 密钥。此外,我已启用,因此每当发生身份验证、签名或解密请求时,我都必须物理按下 Yubikey 上的按钮。当我这样做ssh FOO并且 Yubikey 开始闪烁时,很明显我需要推动它。
我也有执行任务的 cron 作业,例如在后台运行 mbsync 以检索电子邮件,然后它们又使用 GPG 来解密包含密码的文件。在这种情况下,我没有以交互方式启动命令,而是我的 Yubikey 开始闪烁,我不知道为什么(虽然我能猜到)。我希望能够看到当前对 gpg-agent 的查询是什么。
有没有一种方法可以监控和显示对 gpg-agent 的查询,以便我可以看到当前查询实际尝试做什么?
我想禁用键盘输入设备libinput。类似于:
xinput set-int-prop 1 "Device Enabled" 8 0
Run Code Online (Sandbox Code Playgroud)
它遵循以下语法:
--set-int-prop 设备属性格式值
设置设备的整数属性。格式的适当值为 8、16 或 32,具体取决于属性。已弃用,请改用 --set-prop。
(或喜欢xinput set-prop)。
我想用它来禁用模拟键盘的身份验证加密狗 (Yubikey),无法从虚假触摸中“打出”令牌。
也许有一种不涉及libinput这样做的首选方法。我不想完全禁用加密狗,因为它具有除通过键盘模拟生成令牌之外的功能(它也是 GPG 智能卡)。
我在 Wayland 上使用 Fedora 26。
我在本地系统上使用 yubikey nano 在远程系统上进行加密/解密/签名,以及 SSH 代理转发。我记得这是一个设置的负担,但它已经完美地工作了几个月。突然就断了。我的搜索都返回了我在设置时阅读的相同链接,但我被卡住了。
SSH 代理转发莫名其妙地工作。远程系统显示:
REMOTE:$ ssh-add -L
ssh-rsa blahblah cardno:123
Run Code Online (Sandbox Code Playgroud)
我可以使用 SSH 从远程系统登录到其他服务器,它使用 nano 进行身份验证(我知道这一点,因为它需要触摸才能启用代理签名)。我可以在本地系统的 gpg-agent 日志中看到有关 SSH 签名的日志。
但是,我根本无法让 GPG 签名/加密工作。如果我在远程系统上运行以下命令:
REMOTE:$ echo "$(uname -a)" | gpg2 --armor --clearsign --default-key 0x1234
gpg: all values passed to '--default-key' ignored
gpg: no default secret key: No secret key
gpg: [stdin]: clearsign failed: No secret key
Run Code Online (Sandbox Code Playgroud)
在本地 gpg-agent 日志中,我没有看到有关尝试的日志。如果我运行这个命令,我可以在本地 gpg-agent 日志中看到日志条目:
REMOTE:$ $ netcat -U /home/user/.gnupg/S.gpg-agent
OK Pleased to meet you
RESET
OK
GETINFO PID
ERR 67109115 Forbidden …Run Code Online (Sandbox Code Playgroud) 我可以在没有 Fido U2F 的情况下设置 SSH 密钥对,如所描述的SSH 代理在许多服务器上工作而无需重新键入?一些旗帜?在线程中。两步验证会非常好:私钥密码和 Fido U2F 验证也是如此。我不确定我们是否也需要 Fido/YubiKey 服务器,如线程Yubico Linux Login 中所述。我的动机是我经常忘记我的密码,如果在一步验证中使用这些密码很长。密码多长多难,一步验证本身也很弱。因此,我想在我的 Debian 中使用密钥进行两步验证,因为我认为密钥可以提高很多安全性。
门票发送给 YubiKey团队2017 年 2 月 22 日
Dear Sir/Madam,
We are thinking how to get 2-step verification with your key and keys in the following thread. Improvements are needed in FIDO U2F and OpenSSH parts. I am thinking how we can push the thing forward with You. Please, say what we can do because the feature request …Run Code Online (Sandbox Code Playgroud) 我已经购买了一对 yubico 设备来用于各种项目,但是,令我震惊的是它们不能在 debian 10 上工作。我知道有一些错误报告和 udev 规则可以缓解这种情况,但是在尝试之后其中一些建议,我仍然没有成功。
这是我所知道的:
Bus 001 Device 097: ID 1050:0120 Yubico.com Yubikey Touch U2F Security Key
$ ykinfo -a
Yubikey core error: no yubikey present
Run Code Online (Sandbox Code Playgroud)
SUBSYSTEM=="usb", \
ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010|0110|0111|0114|0116|0120|0401|0403|0405|0407|0410", TAG+="uaccess", GROUP="plugdev", MODE="0660", ENV{ID_SECURITY_TOKEN}="1"
Run Code Online (Sandbox Code Playgroud)
udevadm(:uaccess: 没有这个规则就不会出现标签)P: /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1/1-3.1.2
N: bus/usb/001/098
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.1/1-3.1.2
E: DEVNAME=/dev/bus/usb/001/098
E: DEVTYPE=usb_device
E: DRIVER=usb
E: PRODUCT=1050/120/524
E: TYPE=0/0/0
E: BUSNUM=001
E: DEVNUM=098 …Run Code Online (Sandbox Code Playgroud) 我有一些麻烦gpg(实际上pass它使用gpg在背景中)到里面工作tmux和Yubikey新。尝试解密文件或使用签名时,gpg我得到以下信息:
$ gpg -d test.gpg
gpg: sending command `SCD PKDECRYPT' to agent failed: ec=5.99
gpg: public key decryption failed: general error
gpg: decryption failed: secret key not available
Run Code Online (Sandbox Code Playgroud)
这仅在 内部tmux,如果我尝试zsh直接在正常会话中运行相同的命令,gnome-terminal它就可以工作:
gpg -d test.gpg
helloworld
Run Code Online (Sandbox Code Playgroud)
pinentry 会弹出,问我要解锁 Yubikey 的 PIN 码并继续解密文件。
我想我将问题缩小到pinentry无法生成。设置日志级别gpg-agent我得到以下内容:
gpg-agent[906]: DBG: chan_6 <- INQUIRE NEEDPIN ||Please enter the PIN
gpg-agent[906]: starting a new PIN Entry
gpg-agent[906]: DBG: chan_7 …Run Code Online (Sandbox Code Playgroud)