一个 gpg-agent 的奇怪表现

2021-12-30 10:30:42 +08:00
 cloudfstrife

背景

我在本地配置了 ssh 使用 gpg-agent 的密钥,即如下配置

$ cat ~/.gnupg/gpg-agent.conf 
enable-ssh-support

$ cat ~/.gnupg/sshcontrol
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 3600 confirm

当我使用 ssh 远程连接到远端服务器,在远端服务器使用 git 的时候,貌似也使用本地的 gpg-agent 的密钥来验证了(表现为弹出使用 gpg 密钥的提示框)。

疑问

使用 gpg-agent 管理 ssh 密钥时,在远端的操作,会使用本地的密钥进行认证吗?

771 次点击
所在节点    问与答
3 条回复
cloudfstrife
2021-12-30 15:37:35 +08:00
我找到了原因,解释如下:

```
$ cat .ssh/config
Host 192.168.xx.xxx
HostName 192.168.xx.xxx
User xxxxxxxx
ForwardAgent yes
```
ssh config 中配置了 `ForwardAgent yes` 这里的启用了 agent-forwarding 功能
如果希望用户对所有远端服务器的连接都启用此功能,可以如下配置`.ssh/config `
```
Host *
ForwardAgent yes
```

全局启用可以修改 `/etc/ssh/ssh_config`文件中的 `#ForwardAgent no` 改为 `ForwardAgent yes`

服务端 sshd 配置 `AllowAgentForwarding` 默认为 YES ,所以,远端服务的 ssh 验证被转发到本地的 gpg-agent 来处理了。

原理非常简单,但是之前没遇到过这种用法,所以……
wooyuntest
2022-01-02 19:05:01 +08:00
ForwardAgent 实现的。 不仅 ssh 可以转发。gpg 加解密本身 也可以使用本地的 agent ,十分适合 yubikey 这种密钥创建在硬件设备里无法导出的设备做验证的使用场景。
cloudfstrife
2022-01-04 12:03:30 +08:00
@wooyuntest #2 是的,实现原理是转发请求,逐级转发,直到本地 agent 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/825220

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX