我可以针对永久保留的 identifyFile 进行 ssh-add ,目前仅针对当前有效的 ssh会话(即identityFile)通过运行ssh-add -L可以找到使用服务器进行新的ssh会话时使用ssh-add添加丢失的内容
问题是我们的亚马逊服务器有各种项目,其中repo在github中休息。
现在每个回购都有基于用户的访问权限 说用户A仅对项目A具有访问权限, B仅对项目B具有访问权
使用该访问权限设置(在github中)现在每个用户只能执行git操作(如git fetch,git push等)各自的项目(这就是我们想要的)
现在我想要的是当用户对我希望 ssh-agent 的相应项目执行git操作时,在帐户中获取所有ssh-key并查找与该特定用户匹配的ssh-key
注意
每个ssh-key都有一个与之关联的短语(每个用户都知道一个独特的秘密),提示在执行git函数时输入。
实现这一目标
ssh-add /root/.ssh/A
或
ssh-add /root/.ssh/B
但正如之前提到的,这只停留在活动的ssh-session ,退出或与服务器进行 new ssh会话ssh -add信息丢失。可以通过运行 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')
这种隔离能否实现,或者我听起来有点过于雄心勃勃
谢谢
答案 0 :(得分:4)
您对IdentityFile的编辑非常接近。但是,您需要在IdentityFile中列出唯一主机名。因为你两次都使用github.com作为主机名,当你尝试连接到github.com时,它不知道使用哪一个。
我们有类似的设置。我们有5个用户,所有用户都登录到一个帐户。但是,Github需要使用自己的ssh-key查看它们,所以我们有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
每当 UserB 想要做一些与git相关的事情时(例如克隆他们的一个存储库),他们就会运行......
git clone UserB_github:UserB/MyRepo
或类似的东西。这将表现得就像他们已经进入......
git clone github.com:UserB/MyRepo
除了它将使用适当的IdentityFile /私钥。
我知道我的解决方案不使用持久性ssh-add
,但我认为这会为您提供所需的相同性能。不幸的是,您的用户每次执行交易时都需要输入密码。