新手问题 如果项目在群组私有 github 上,ssh key 必须加到群组帐号上吗?

chairy11 · 2015年05月08日 · 最后由 doitian 回复于 2015年05月09日 · 4733 次阅读

情况是这样的,创建 repository 的是另一个帐号,为 github 私有项目。 这个项目只有我一个人在写,貌似角色是 Contributors。 我现在要边写边部署到服务器上,用 capistrano。 我的理解是,capistrano 需要设置 ssh key,要从服务器通过 ssh key 无须输入密码从代码仓库 pull 代码,也要从我本机到服务器 ssh key 无须密码直接连接。

而难点在于,那个拥有这个 repo 的帐号,不愿意把服务器的 ssh key 加到帐号的 ssh list 里面去,因为担心这样会泄露这个帐号下的其它项目代码……

这个怎么破?

注:我尝试把服务器的 ssh key 加到我的 github 帐号的 ssh list 下,但貌似不行,如果想 git pull 这个项目代码,要我先输入 github 帐号和 github 密码。

你放的是公钥啊,又不是私钥,怕啥泄露?公钥随便贴,你要我可以把我的给你

这里一般担忧的是你的服务器被入侵,别人可以通过你服务器上的 key 去修改你库里的源代码,这时候要用 deploy key(项目的 Settings - Deploy Key),deploy key 是只读的

#1 楼 @ninehills 没明白。 我服务器的 ssh key 公钥放到私有群组帐号 ssh list 里,那如果有坏人操纵了服务器,他有办法通过 ssh 无密码自动连接而删 github 的代码吗?(我印象中 github 上 repo 都是手工删除的吧?) 但起码一点是它能通过服务器把所有这个私有帐号下面的代码都 git clone 到服务器,然后它再复制走吧?

#2 楼 @chairy11 deploy key 是 project 级别的,read-only 权限

坏人入侵你的服务器,用你的私钥只能拉取你设置了 deploy key 的那个 project,无法对这个 project 进行修改,也不能访问同账号下的其他 project。

#3 楼 @ninehills 你看看我理解正确没有: 1.被部署服务器只需要 git pull 一个项目,用于部署,不需要修改代码。 2.这个项目是 github 上某群组的私有项目库中的一个,我有 contribute 权限。 3.这种情况下,应该用 deploy key,而不是把服务器的公钥加到群组帐号的 ssh list 里。

推荐用 ssh agent forward

需要 登录 后方可回复, 如果你还没有账号请 注册新账号