我在arch linux上使用openssh7.5p1和gnupg 2.1.21(这些是arch随附的默认版本)。我想gpg-agent
用作ssh代理。我将以下内容放入~/.gnupg/gpg-agent.conf
:
pinentry-program /usr/bin/pinentry-qt
enable-ssh-support
Arch会自动从systemd启动一个gpg-agent,所以我设置了
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"
当我运行时ssh-add -l
,它不会报告任何身份,并且不会像我期望的那样ps
报告一个gpg-agent --supervised
过程。
不幸的是,当我运行时ssh-add
,无论键类型是什么,它都不起作用。这是我如何尝试dsa的示例:
$ ssh-keygen -f testkey -t dsa -N ''
Generating public/private dsa key pair.
Your identification has been saved in testkey.
Your public key has been saved in testkey.pub.
$ ssh-add testkey
Could not add identity "testkey": agent refused operation
所有其他gpg函数均正常运行(加密/解密/签名)。另外,如果我直接将它们与ssh一起使用,则生成的密钥也可以正常工作;如果运行ssh-agent
openssh附带的密钥,则它们可以正常工作。
该文档说ssh-add
应该向中添加密钥~/.gnupg/sshcontrol
,但是显然什么也没发生。
我的问题:什么是可以载入的OpenSSH的生成的密钥最简单的方式ssh-keygen
进入gpg-agent
,并且有人可以剪切和粘贴出这是如何工作的一个终端会话?
答案显然是在运行:
echo UPDATESTARTUPTTY | gpg-connect-agent
我不知道为什么pinentry程序可以很好地用于其他用途,例如解密文件,但不适用于ssh-add
。
尽管现在可以使用,但它还会复制ssh私钥的副本,该副本不会显示在下方gpg -Kv
,而且似乎也不允许您更改私钥上的密码(因为您无法使用进行编辑--edit-key
) 。基本上,我对gpg-agent
提供秘密复制位置的可见性不高的方式非常不满意。如果您因为希望gpg-agent
可以替代而不是而提出了这个问题ssh-agent
,那么我鼓励您坚持使用ssh-agent
而不是尝试我的答案。首选的主要原因gpg-agent
是您是否需要使用智能卡。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句