V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cloudfstrife
V2EX  ›  问与答

一个 gpg-agent 的奇怪表现

  •  
  •   cloudfstrife · 2021-12-30 10:30:42 +08:00 · 687 次点击
    这是一个创建于 841 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    我在本地配置了 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 密钥时,在远端的操作,会使用本地的密钥进行认证吗?

    3 条回复    2022-01-04 12:03:30 +08:00
    cloudfstrife
        1
    cloudfstrife  
    OP
       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
        2
    wooyuntest  
       2022-01-02 19:05:01 +08:00
    ForwardAgent 实现的。 不仅 ssh 可以转发。gpg 加解密本身 也可以使用本地的 agent ,十分适合 yubikey 这种密钥创建在硬件设备里无法导出的设备做验证的使用场景。
    cloudfstrife
        3
    cloudfstrife  
    OP
       2022-01-04 12:03:30 +08:00
    @wooyuntest #2 是的,实现原理是转发请求,逐级转发,直到本地 agent 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   889 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:23 · PVG 05:23 · LAX 14:23 · JFK 17:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.