我在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
,并且有人可以剪切和粘贴出这是如何工作的一个终端会话?