我可以对永久保留的 identifyFile 执行 ssh-add 吗,目前它只适用于当前事件的 ssh session (即 identityFile使用 ssh-add 添加会丢失当与服务器建立新的 ssh session 时可以通过运行 ssh-add -L 找到)
问题是我们的amazon服务器有各种项目,repo在github上。
现在每个仓库都有基于用户的访问权限 假设用户A仅对项目A具有访问权限并且B对项目B具有访问权限仅
设置了访问权限(在 github 中),现在每个用户都可以执行 git 操作(如 git fetch、git push 等),只对各自的项目(这就是我们想要的)
现在我想要的是当用户在相应的项目上执行 git 操作时,我希望 ssh-agent 获取帐户中的所有 ssh-keys 并寻找与该特定用户匹配的 key
注意
that each ssh-key has a phrases(a unique secret know to each user there own) associated with it, prompted to enter when perform git function.
为了实现这一目标,我们做到了
ssh-add /root/.ssh/A
或
ssh-add /root/.ssh/B
但是正如前面提到的,这只会在 active ssh-session ,exit 或与服务器建立一个 new ssh ssh ssh session - 添加信息丢失。可以通过运行 ssh-add -L
找到我也试过在 .ssh/config 中定义 IdentityFile,就像这 question 中描述的那样
像这样
Host github.com
Hostname github.com
User git
IdentityFile /root/.ssh/A
Host github.com
Hostname github.com
User git
IdentityFile /root/.ssh/B
这只对一个用户有效(有时对“A”有效,有时对“B”无效,同样适用于“B”)
这种隔离能否实现,还是我听起来有点过于雄心勃勃了
谢谢
最佳答案
您对 IdentityFile 的编辑已经非常接近了。但是,您需要在身份文件中列出唯一 主机名。因为您两次都使用 github.com 作为主机名,所以当您尝试连接到 github.com 时,它不知道该使用哪一个。
我们有类似的设置。我们有 5 个用户,他们都登录到一个帐户。然而,Github 需要看到他们每个人都使用自己的 ssh-key,所以我们有 5 个 key 。解决这个问题的技巧是让你的文件看起来像这样
Host UserA_github
Hostname github.com
User git
IdentityFile /root/.ssh/A
Host UserB_github
Hostname github.com
User git
IdentityFile /root/.ssh/B
每当 UserB 想要做一些与 git 相关的事情(例如,克隆他们的一个存储库)时,他们将运行...
git clone UserB_github:UserB/MyRepo
或类似的东西。这将表现得好像他们已经进入...
git clone github.com:UserB/MyRepo
除了它将使用适当的 IdentityFile/私钥。
我知道我的解决方案不使用持久性 ssh-add
但我认为这将为您提供您想要的相同性能。遗憾的是,您的用户每次执行交易时都需要输入密码。
关于git - 可以全局添加ssh-add吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10763410/