LandØ
首发于LandØ
配置新版 GPG SSH 认证代理

配置新版 GPG SSH 认证代理

最近在使用 Ubuntu MATE 17.04,默认安装的 gpg (2.1.15) 与之前旧版 gpg 在配置 SSH 认证代理时有些许不同,因此写这篇日志记录一下。

旧版 gpg 的 write-env-file 选项被取消掉了,改为使用

gpgconf --list-dirs agent-ssh-socket

命令来获取 SSH 认证代理地址。

此外

gpg-agent --daemon

会自动识别当前是否已经有 gpg-agent 在运行,如果有,则不会启动新的 gpg-agent

新版的 GPG SSH 认证代理的配置会更加方便

  • 修改或新建 ~/.gnupg/gpg-agent.conf,增加如下内容
enable-ssh-support
  • 修改 ~/.bashrc,增加如下内容
unset SSH_AGENT_PID # 清除 gnome-keyring 设置的环境变量
gpg-agent --daemon &> /dev/null # 启动 gpg-agent,不会重复启动
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" # 设置环境变量,指定 gpg-agent 为 SSH 认证代理

通过以上设置,就可以确保在使用终端的时候,SSH 会使用 gpg-agent 作为认证代理,并可以使用 Yubikey 等 GPG Card 进行 SSH 登录。

此时,插上你的 Yubikey,执行 ssh-add -L 就可以看到你的 Yubikey 对应的 SSH 公钥了。

PS: 在使用 Ubuntu MATE 17.04 的时候发现,非 root 用户无法使用 gpg --card-status 等命令访问 GPG Card,解决方案见 如何修改 Linux 设备权限 - 知乎专栏

编辑于 2017-05-04

文章被以下专栏收录

    所有文章,除非特殊说明,任何人可以按照 CC BY 3.0 标准转载