Vir*_*ren 6 git ssh openssh github ssh-keys
我可以做的ssh-ADD对identifyFile那相依相偎,目前它仅盛行的当前活动SSH会话(即identityFile当使用新的SSH会话与服务器建立可以通过运行SSH-发现SSH-ADD迷路添加添加 -L )
问题是我们的亚马逊服务器有各种项目,这些项目都在 github 中。
现在回购每个人都有正确的基础上,用户的访问 说,用户右只能访问项目A和B对B项目的访问权限只
有了这个访问权限集(在 github 中),现在每个用户只能对各自的项目(这是我们想要的)执行 git 操作(如 git fetch、git push 等)
现在我想要的是当用户在各自的项目上执行 git 操作时,我希望ssh-agent获取帐户中的所有 ssh-keys 并查找与该特定用户匹配的那个
笔记
每个 ssh-key 都有一个与之关联的短语(每个用户都知道的唯一秘密),在执行 git 功能时提示输入。
为了实现这一点,我们做
ssh-add /root/.ssh/A
Run Code Online (Sandbox Code Playgroud)
或者
ssh-add /root/.ssh/B
Run Code Online (Sandbox Code Playgroud)
但如前所述,这仅适用于活动的 ssh-session,退出或与服务器建立新的ssh 会话 ssh-add 信息丢失。可以通过运行ssh-add -L 找到
我也试过在 .ssh/config 中定义 IdentityFile 就像在这个问题中描述的那样
像这样的东西
Host github.com
Hostname github.com
User git
IdentityFile /root/.ssh/A
Host github.com
Hostname github.com
User git
IdentityFile /root/.ssh/B
Run Code Online (Sandbox Code Playgroud)
这仅适用于一个用户(有时适用于“A”,有时不适用于“B”)
这种隔离可以实现还是我听起来有点过于雄心勃勃
谢谢
您对 IdentityFile 的编辑非常接近。但是,您需要在 IdentityFile 中列出唯一的主机名。因为您两次都使用 github.com 作为主机名,所以当您尝试连接到 github.com 时,它不知道使用哪个。
我们有类似的设置。我们有 5 个用户,他们都登录到一个帐户。但是,Github 需要看到它们每个都使用自己的 ssh 密钥,所以我们有 5 个密钥。解决这个问题的诀窍是让你的文件看起来像这样
Host UserA_github
Hostname github.com
User git
IdentityFile /root/.ssh/A
Host UserB_github
Hostname github.com
User git
IdentityFile /root/.ssh/B
Run Code Online (Sandbox Code Playgroud)
每当UserB想做一些与 git 相关的事情时(例如克隆他们的存储库之一),他们就会运行......
git clone UserB_github:UserB/MyRepo
Run Code Online (Sandbox Code Playgroud)
或类似的东西。这将表现得好像他们已经进入......
git clone github.com:UserB/MyRepo
Run Code Online (Sandbox Code Playgroud)
除了它将使用适当的 IdentityFile/私钥。
我知道我的解决方案不使用持久性,ssh-add但我认为这将为您提供您想要的相同性能。不幸的是,您的用户每次执行交易时都需要输入密码。
| 归档时间: |
|
| 查看次数: |
2288 次 |
| 最近记录: |