使用 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)