因此,像许多人一样,我在以下工具的帮助下使用 GPG 密钥进行 SSH 身份验证猴球,这样我就可以使用命令将我的私钥加载到代理monkeysphere s
,并且无需密码即可自由连接到任何我想要的地方。
我最近更新了我的 Arch Linux 机器,发现 GnuPG 2.0 被替换为与 Monkeysphere 不兼容的 GnuPG 2.1。据称 GPG 2.1 带来了一些改进,使得gpg-agent
Monkeysphere 不再需要,但是我很难找到关于如何使用它们的明确说明。
有人可以解释如何配置 GPG 2.1 来实现同样的事情,这可以通过 Monkeysphere 实现(将私钥加载到内存一次并在每个下一个连接中使用它)?
答案1
我认为您正在寻找 ssh.com 文档中涵盖的这一点PGP 密钥部分。
摘抄SSH Secure Shell 仅支持 OpenPGP 标准以及符合该标准的 PGP 程序。以下指令中使用 GnuPG。如果使用PGP,唯一的区别是文件扩展名是pgp,而不是GnuPGP的gpg。
为了确保启用用户公钥身份验证, 远程文件和本地文件
AllowedAuthentications
中的字段都应包含单词“publickey”:/etc/ssh2/sshd2_config
/etc/ssh2/ssh2_config
AllowedAuthentications publickey
其他身份验证方法也可以在配置文件中列出。将您的私钥环 (
secring.gpg
) 复制到~/.ssh2
本地目录。~/.ssh2
如果您还没有本地目录中的标识文件,请创建一个标识文件。将以下行添加到标识文件中:PgpSecretKeyFile <filename of the user's private key ring> IdPgpKeyName <name of the OpenPGP key in PgpSecretKeyFile> IdPgpKeyFingerprint <fingerprint of OpenPGP key in PgpSecretKeyFile> IdPgpKeyId <id of the OpenPGP key in PgpSecretKeyFile>
将您的公钥环 (
pubring.gpg
) 复制到~/.ssh2
远程目录scp2 pubring.gpg user@remote_host:.ssh2
在远程目录中创建授权文件
~/.ssh2
。将以下行添加到授权文件中:PgpPublicKeyFile <filename of the user's public-key ring> PgpKeyName <name of the OpenPGP key> PgpKeyFingerprint <fingerprint the OpenPGP key> PgpKeyId <id of the OpenPGP key>
现在您应该能够使用 Secure Shell 从本地登录远程。尝试登录:
Local>ssh Remote Passphrase for pgp key "user (comment) <user@Local>":
输入 PGP 密钥的密码后,将建立 Secure Shell 连接。
参考
答案2
告诉您的 gpg-agent 启用对 ssh-agent 协议的支持。您可以通过以下方式启动它
--enable-ssh-support
或通过放置来做到这一点enable-ssh-support
进入
~/.gnupg/gpg-agent.conf
。告诉代理哪个您想要用于 ssh 身份验证的密钥(请注意,该密钥必须具有A(验证)能力)。你必须找到要点的密钥,为此,请列出带有 的密钥
--with-keygrip
,例如:gpg2 --with-keygrip -k <your email>
将 keygrip(或多个键的 keygrip,每行一个)粘贴到
~/.gnupg/sshcontrol
.从 2.1 开始,代理对其侦听的套接字使用静态路径。只需添加以下内容即可将 ssh 指向正确的套接字:
export SSH_AUTH_SOCK="$HOME/.gnupg/S.gpg-agent.ssh"
某些启动文件(
~/.xsession
,~/.bashrc
或任何合适的文件)。