我使用 Ubuntu 14.10 发行版和两个私钥,一个加密 ( ~/.ssh/E.key
),一个未加密 ( ~/.ssh/NE.key
),我用它们分别访问两个 github 存储库repoE
和repoNE
.
我使用了两个不同域的别名的常见技巧gitbhub.com
,这两个域映射到各自的 ssh 密钥。
内容(仅相关)~/.ssh/config
:
Host github.com-E
Hostname github.com
IdentityFile ~/.ssh/E.key
Host github.com-NE
Hostname github.com
IdentityFile ~/.ssh/NE.key
本地存储库配置的内容(仅相关):
# /path/to/repoE/.git/config:
[remote "origin"]
url = [email protected]:organizationE/repoE.git
# /path/to/repoNE/.git/config:
[remote "origin"]
url = [email protected]:organizationNE/repoNE.git
我使用ssh-add
, 这样我就不需要输入密码来访问repoE
.
问题是,显然,只有我添加的第一个密钥被使用(我可以从 ssh 客户端日志中看到报价)。
例如,这是一个示例运行:
$ ssh-add ~/.ssh/E.key
# I can now access repoE, but not repoNE
$ ssh-add ~/.ssh/NE.key
# Still the same (I can access repoE, but not repoNE)
$ ssh-add -D
$ ssh-add ~/.ssh/NE.key
# I can now access repoNE, but not repoE
$ ssh-add ~/.ssh/E.key
# Still the same (I can access repoNE, but not repoE)
答案1
gpg-agent
而且很可能ssh-agent
也不关心密钥属于什么。密钥通过其 keygrip 进行识别(纯密钥材料的指纹,而例如 OpenPGP 指纹位于密钥材料和一些附加数据(如创建日期)之上)。
您可以在配置文件中启用/增加日志记录~/.gnupg/gpg-agent.conf
。相关选项有
--debug-level
--log-file
要激活此更改,gpg-agent
要么需要SIGHUP
(对于某些已给定选项的更改,请参阅手册页中的“SIGHUP”部分),要么必须重新启动。
您还可以在配置文件中启用日志记录,ssh
以查看.也可能有帮助。相关选项有:git push
ssh
strace -f -e trace=execve git push
log_file
LogLevel