我已设置 GPG 来与 SSH 通信(使用--enable-ssh-support
)。我有两个密钥: say0x1234
和0xABCD
。这两个密钥均具有以下子密钥:
- 签名密钥
- 加密密钥
- 身份验证密钥
ssh-add -L
因此,当我先运行0x1234
first 然后运行 by 时,我有两个不同的公钥0xABCD
(我认为此顺序由最后添加的密钥定义)。一切运行良好。
我需要两个不同的密钥,因为我有一些服务器只接受两个密钥中的一个。但是,我也有一些服务器接受两个密钥(例如 Github)。我更喜欢使用0xABCD
而0x1234
不是 即使两者都会被接受。但是,SSH 总是会选择第一个被接受的密钥,因此在这样的服务器中始终0x1234
优先使用 而不是。0xABCD
我认为这必须在 GPG 方面进行更改,因为它是gpg-agent
按照此顺序返回密钥的。
有什么方法可以强制报告按键的顺序吗?
答案1
我有同样的问题并进行了编辑~/.gnupg/sshcontrol
以重新排序条目。
# List of allowed ssh keys. Only keys present in this file are used
# in the SSH protocol. The ssh-add tool may add new entries to this
# file to enable them; you may also add them manually. Comment
# lines, like this one, as well as empty lines are ignored. Lines do
# have a certain length limit but this is not serious limitation as
# the format of the entries is fixed and checked by gpg-agent. A
# non-comment line starts with optional white spaces, followed by the
# keygrip of the key given as 40 hex digits, optionally followed by a
# caching TTL in seconds, and another optional field for arbitrary
# flags. Prepend the keygrip with an '!' mark to disable it.
# Ed25519 key added on: 2019-01-01 07:08:09
# Fingerprints: MD5:93:75:54:e3:58:91:6c:7e:25:8f:f4:dd:98:81:8d:1a
# SHA256:RP+Mcdf4WsZeBkfrdumZmUBlt7bPSkENyVgFpxs276o
B0651F46AEC857C8C842231E74C71A03622DBCD1 0
# ... more entries
密钥按照它们在此文件中出现的顺序使用。您可以使用ssh-add -l
显示您正在查看的密钥的 sha256 哈希值ssh-add -L
。