对多个 github 项目使用相同的部署密钥

2024-01-08

Github 不允许同一个 ssh 部署密钥用于多个项目,这在某些情况下非常有用(例如,CI 服务器处理具有私有子模块的项目)。我已经看到各种线程似乎都说这种限制是出于“安全原因”而存在,但我还没有看到关于这到底会带来什么风险的令人信服的解释。

请注意,Github 不允许账户级别重用密钥是有意义的(两个用户不应共享密钥)。这只是限制部署密钥我正在质疑。

需要明确的是,我not寻找解决方法(创建一个虚拟用户,使用多个密钥,...),但只是为了对部署密钥的此限制提供合理的解释。

相关主题:

  • 一个显示一个解决方法 http://eclipsesource.com/blogs/2012/07/30/accessing-multiple-private-github-repositories-without-a-dedicated-build-user/
  • One 讨论这个问题 https://github.com/gitlabhq/gitlabhq/issues/370但并没有真正去任何地方

不幸的是,在这种情况下,github 会误解密钥对与帐户或项目之间的区别。

由于密钥对用于身份验证和授权,因此它实际上是一个身份。 Github 帐户是另一个身份。将 github 帐户连接到密钥对可以有效地在基于 github 帐户的身份和密钥对身份之间建立 1:N 映射。

相反,github 强制将项目与基于密钥对的身份进行 1:N 映射。现实世界的类比是,有一扇允许许多不同的人打开该项目的门。但一旦他们中的任何一个人获得了门的钥匙,他们就再也无法获得任何其他门的钥匙了。

从遏制密钥泄露的角度来看,不经常重复使用密钥是有意义的。但这只是一个好的管理policy。阻止密钥被多次使用没有多大意义原则上。有些门的钥匙永远不会重复使用,好吧,这又取决于policy.


一个稍微复杂的视图是将密钥对说明为roles。您可以拥有许多密钥对,因此可以担任许多角色。私钥对您的角色进行身份验证。

Github 将键映射部署到项目指出,一个角色永远不能包含多个任务。这很少是现实的。

当然,这些都不会改变 github 允许的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对多个 github 项目使用相同的部署密钥 的相关文章

  • Jenkins 多分支管道 - 在分支中配置属性?

    我们已经使用 Jenkins 多分支管道插件成功设置了构建管道 该插件在大多数情况下都运行良好 但是我们遇到了一个困扰我们的问题 Jenkinsfile包含一组属性 这些属性也显示在 UI 中 但如何为各个分支设置默认值 这就是我们的属性定
  • git-http-backend 与 AuthzUnixGroup 无法正常工作

    我正在尝试在 CentOS 6 机器上的 Apache 2 2 上设置一个 git 存储库 并安装了 git 我尝试过许多不同的方向 但我却不知所措 我目前的情况包括能够clone正常 但完全无法推动 似乎我无法使身份验证位正常工作 因为我
  • 有什么方法可以有效地应用大型 git 补丁吗?

    我们收到了一个大补丁 修改了大约 17000 个文件 其大小为5 2G 应用补丁时git apply 3 12个小时后还没有完成 我们将每个文件的补丁分成更小的补丁 然后一一应用它们 这样至少我们可以看到进度 再次卡在一个文件补丁上 仍然有
  • Jupyter (iPython) 笔记本中的 Latex 宏未由 github 渲染

    我的 Jupyter 笔记本 ipynb 中有一个 Markdown 单元 其中包含以下内容 newcommand paren 1 left 1 right paren beta 2 该文件位于 Github 存储库中 LaTex 宏应用程
  • Git 中的提交是越多越好还是越少越好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我最近与一位同事进行了一场辩论 他坚持认为 由于合并冲突 提交越少越好 我认为通过使用尽可能多的提交获得的细节越多越好 提交更多还是更少更好 为
  • 为什么每次合并分支后我的 git log graph 都会多增长一行?

    我习惯使用git log oneline graph decorate all作为别名git ll在终端中查看提交图表 但是当我每次合并我的时 一个问题让我感到困惑develop to master 上面命令的输出可能是这样的 0d1bf7
  • 如何将 man 和 zip 添加到 Windows 上的“git bash”安装中

    我在用git bash https git for windows github io 在 Windows 上 即git对于 Windows 通过集成bash 显然它使用的是MINGW MSYS支撑 来自 VonC 的更新 现在使用 msy
  • Ansible git clone“权限被拒绝”但直接 git clone 工作

    我在使用 Ansible 时遇到了一个令人不安的问题 我使用当前主机的 ssh 密钥在我的环境中设置 git 克隆 name Add user Public Key copy src Users alexgrs ssh id rsa pub
  • Git推送更新远程服务器信息失败

    当我尝试将新分支推送到远程源时 出现以下错误 我能够在现有分支上推送提交 并且现有分支上没有问题 git push u origin master1 Fetching remote heads refs refs tags refs hea
  • 如何在保留历史记录的同时将 git 存储库重新设置为父文件夹?

    我有一个 git 仓库 foo bar baz具有大量的提交历史和多个分支 我现在想要 foo qux位于同一个仓库中 foo bar baz 这意味着我需要它们都位于植根于的存储库中 foo 但是 我想保留我所做的更改的历史记录 foo
  • 如何归档旧的 git 标签?

    我的 git 存储库中有一些不再重要的旧标签 我想存档标签 以便在运行 git tag 时默认情况下它们不会显示 我不想删除它们 因为我想保留历史记录 我怎样才能做到这一点 可以将标签保留在存储库中并避免将它们列为标签 它还可以避免默认克隆
  • 如何忽略Git中以数字开头的文件?

    在某个文件夹中 我有名为foo jpg bar png等等 我想将它们保留在版本控制中 除了那些命名为1 baz png 2 zaz jpg等 因为它们实际上是生成的 我应该添加什么条目 gitignore 正则表达式如 0 9 似乎不起作
  • 使用 Dropbox 作为跨多台机器的 git 工作目录 - 提交不能完美同步

    首先 我想强调这个问题与在 Dropbox 上托管我的中央存储库无关 而且我对使用 git 还很陌生 我能找到的其他涉及 Dropbox 和 git 的问题都没有真正回答我的问题 它们要么是关于使用 Dropbox 托管您的存储库 要么是关
  • Git 提交从 Windows 上的守护程序返回错误 docker/error 响应

    我正在为我的 Laravel 应用程序 BE 运行 docker 我对 readmeme md 文件进行了简单的更新 并尝试将此文件提交并推送到 git 当我尝试提交时 这就是我得到的 gt git c user useConfigOnly
  • 使用 versioneer 和 GitHub 更新版本号

    我在用versioneer适用于多个 GitHub 托管的 Python 项目 看来 versioneer 已安装并且工作正常 我可以调用project version 但是我忘记了如何更新版本号的过程 如果有什么东西在setup cfg
  • 错误:GitHub 目前无法显示这么大的文件 - 但该文件只有 1.06 MB [已关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我通过两种不同的方式将 HTML 文件上传到 GitHub 存储库 拖放以及使用终端上的 Git 添加 提交 推送 在这两种情况下
  • 如何在两个不同帐户之间设置无密码身份验证

    我们可以在两台机器的两种不同用途之间设置无密码身份验证吗 例如 计算机A有用户A 计算机B有用户B 我们可以设置密码 ssh 以便计算机 A 上的用户 A 使用其用户帐户 A 登录计算机 B 谢谢你 如果我理解你的问题 你能设置一下吗ssh
  • PHP shell_exec 使用 ssh 运行 shell 脚本

    我有一个 shell 脚本 使用 ssh 和密钥连接到另一台机器 因此它不需要用户名和密码 当我从命令行运行这个脚本时 它工作正常 但是当我从 php shell exec 运行这个脚本时 它不起作用 如果我与 PHP 建立 ssh 连接并
  • 忽略提交之间 git-diff 的*所有*空白更改

    我正在检查代码库并修复空白奇怪之处并通常纠正缩进等事情 并且我想确保我没有无意中进行任何其他更改 所以我正在做git diff w显示所有已更改文件中的差异 同时忽略空白差异 问题是这实际上并没有忽略all空白差异 至少是什么I认为仅仅是空
  • Git 版本控制中忽略父目录

    如何忽略父目录 gitignore 我尝试了这种模式 但似乎它们不起作用 如果您想忽略某个文件夹但不想修改现有的 gitignore 请将 gitignore 放入仅包含星号的文件夹中 下面是一个快速的 BASH 示例 用于完成 idea

随机推荐

  • 使用 cin 进行整数输入时捕获字符串[重复]

    这个问题在这里已经有答案了 我在 google stackoverflow 上看到过类似的帖子 然而 我找不到一个足够接近我的场景的方法 而且我对 C C 的了解也不够深 无法将其他建议移植到我的方法中 也许这本身就是一个标志 无论如何 这
  • 如何让 TortoiseSVN 始终冻结标签的 svn:externals

    tortoiseSVN 可以做到这一点吗 总是冻结svn externals对于标签 场景是我们的主干将始终使用外部的 HEAD 修订版 但是当我们创建 标签 时 我们希望它们为外部设置修订版 以便在特定时间点正确 冻结 它们 Update
  • AJAX 请求是否保留 PHP 会话信息?

    如果我有一个用户登录到我的网站 他的 ID 存储在 SESSION 然后从他的浏览器中单击 保存 按钮 这将向服务器发出 AJAX 请求 他的会 SESSION并且 cookie 会保留在该请求中 我可以安全地依赖 id 中存在的信息吗 S
  • VideoJS 进度事件在 Safari 5.1 上始终为 0

    我在 Safari 5 1 上使用 VideoJS 播放视频时遇到这种奇怪的行为 如果我听进度事件 var player videojs player id preload auto techOrder html5 player on pr
  • 创建并流式传输图像存档 zip 文件以供下载 C#

    我正在 MVC3 中使用深受喜爱的 DotNetZip 归档库来动态生成 Zip 文件 其中包含来自存储在数据库中的二进制文件的 png 图像 然后 我将生成的 Zip 文件流式传输出来供用户下载 我在保存到数据库之前验证图像数据 因此您可
  • 全屏 UIView,状态栏和导航栏覆盖在顶部

    实现 UIView 顶部的状态栏和导航栏的正确方法是什么 替代文本 http img skitch com 20081217 t78sdixk37hqgdh1ia2fgec4st png http img skitch com 200812
  • IValidatableObject 对于 EF 导航属性没有用?

    仅当实现实体 DbEntityEntry State 不同于 Unchanged 时 才会调用 IValidatableObject Validate 仅更改导航属性不会更改状态 因此永远不会发生验证 为什么微软总是发布半生不熟的测试版东西
  • 多媒体内容的处理程序 (MIME) 不起作用

    我正在与一个在页面中呈现多媒体内容的处理程序合作 这个想法是 该处理程序访问文件并使用扩展名确定类型 然后将其呈现problem是大多数时候处理程序本身被下载并且不提供多媒体 这是代码 FileInfo file new FileInfo
  • 如何更改树莓派的屏幕分辨率[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Raspberry pi 上使用 7 TFT LCD 显示屏 谁能告诉我如何更改 Raspberry Pi 的屏幕分辨率以及 7 T
  • 在 CXF JAX-WS 单向方法调用中获取客户端 IP 地址的可靠方法

    我使用以下代码来获取 JAX WS 单向方法调用的客户端 IP 地址 protected HttpServletRequest getServletRequest MessageContext ctx wsContext getMessag
  • AttributeError:“dict”对象没有属性“drop_duplicates”

    运行此代码时 我收到 AttributeError dict object has no attribute drop duplicates 有什么想法如何解决这个问题吗 第一个模块接口 py import tkinter as tk fr
  • Tkinter - 如何改进“grab_set()”方法行为?

    我编写了一个简单的代码 其中有一个带有两个按钮的主窗口 第一个打开一个新窗口 第二个打开一个消息框 当我打开消息框窗口时 我无法以任何方式与主窗口进行文字交互 如果我单击它 系统铃声会响起并且消息框会闪烁 我想在另一个窗口复制相同的行为 但
  • 在英国的 iPhone 上查看时,从 SSRS 呈现的 Excel 丢失货币符号

    我们的报告动态地格式化货币 因此 在结果集中有一列名为CurrencyFormatString 这通过 FORMAT FieldName CurrencyFormatString 应用于适当的字段 一切似乎都工作正常 直到将报告呈现为 Ex
  • 对矩阵列表求和[重复]

    这个问题在这里已经有答案了 我有一个列表 其中每个元素都是 5 5 矩阵 例如 1 V1 V2 V3 V4 V5 1 0 000000 46 973700 21 453500 338 547000 10 401600 2 43 020500
  • 从谷歌地图 api json 获取 formatted_address

    我想从 json 数组中获取 formatted adress 一个示例链接可以是http maps googleapis com maps api geocode json latlng 55 397563 http maps googl
  • OS X 10.9 Beta 6 上禁用 Eclipse 菜单

    今天我像往常一样打开了日食 但我无法做任何事情 除首选项外的所有菜单均呈灰色 禁用 我使用的是 Mac Mavericks Beta 6 和 Eclipse Kepler 你有什么提示给我吗 重启Eclipse或者整个mac都没有解决问题
  • 用于 beta 测试的 Ad Hoc 发行版 xcode 4.3

    遵循来自的精彩教程后http www raywenderlich com http www raywenderlich com 关于如何将您的应用程序提交到应用程序商店 我从一开始就开始计划我的 Beta 测试计划 我不会详细介绍一切顺利的
  • 模板不会推断 C++ 中零长度数组的大小

    假设我有一个模板函数 它可以推断数组参数的长度 template
  • 当应用程序安装在 SD 卡上时,BroadcastReceiver 不工作

    我正在创建一个 EventsManager 应用程序 其中有一个 BroadcastReciver 它执行 BOOT COMPLETED 广播 此接收器已用于使用 AlarmManager 重新注册所有事件 如果该应用程序安装在手机内存上
  • 对多个 github 项目使用相同的部署密钥

    Github 不允许同一个 ssh 部署密钥用于多个项目 这在某些情况下非常有用 例如 CI 服务器处理具有私有子模块的项目 我已经看到各种线程似乎都说这种限制是出于 安全原因 而存在 但我还没有看到关于这到底会带来什么风险的令人信服的解释