Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我将公共主机的公钥添加到github';什么是会计?_Git_Security_Github_Git Push_Git Reset - Fatal编程技术网

如果我将公共主机的公钥添加到github';什么是会计?

如果我将公共主机的公钥添加到github';什么是会计?,git,security,github,git-push,git-reset,Git,Security,Github,Git Push,Git Reset,这意味着其他人可能会推到github上托管的我的git回购,所以任何人都可以使用吗 git reset --hard first-commit-id git push 这会破坏我在github上托管的git repos吗 如果有坏人执行上述命令,我会失去我的历史吗 这个问题与不同,我不认为仅仅通过重置并发出git push就可以删除任何内容。然而,还有其他一些命令,比如gitpush-f,可以删除或篡改您的整个历史记录,所以我认为您的担心是正确的 是关于如何防止销毁历史记录的配置,但如中所述,

这意味着其他人可能会推到github上托管的我的git回购,所以任何人都可以使用吗

git reset --hard first-commit-id
git push
  • 这会破坏我在github上托管的git repos吗

  • 如果有坏人执行上述命令,我会失去我的历史吗


  • 这个问题与

    不同,我不认为仅仅通过重置并发出git push就可以删除任何内容。然而,还有其他一些命令,比如
    gitpush-f
    ,可以删除或篡改您的整个历史记录,所以我认为您的担心是正确的

    是关于如何防止销毁历史记录的配置,但如中所述,该选项不可用于在github中进行配置

    所以,如果你允许每个人都推动你的github回购,我认为你有理由担心

    编辑:需要注意的是,这个答案只有在其他人真正有权访问时才有效。通过添加公钥,您通常不会授予任何人访问权限,即使他们拥有相同的公钥-对于要推送的人,他们需要拥有私钥,而不是公钥。

    1)如果有些人使用git push-f,那么是的,您可能会在repo中丢失提交。在这种情况下,您可以使用密码短语创建自己的私钥(在使用密码短语的情况下,您可以在每次推送或拉送期间运行ssh代理以跳过输入密码短语)


    2) git reset,只需将HEAD ref移动到firs commit,除此之外,您可以使用git reflog进行修复。

    作为分布式VCS,您将拥有一个与您的机器一样安全的个人本地回购

    Github的回购协议已被授予完全的公共写访问权,这是一个选择,因此不应将其视为安全问题,而应将其视为协作的促成因素,非协作者试图破坏东西的风险很小


    关键的一点是,你仍将拥有一份安全的回购协议的完整个人副本,以便继续运营和合作。并在损坏后恢复github副本。

    你所说的公用主机的公钥是什么意思?@moooeeep这意味着任何使用该公用主机的人都可以推送到我的git report,所以这是一个公用私钥?有时我可能需要在公用PC上工作,所以我必须将该密钥添加到我的github帐户中,如果我忘记从我的github帐户中删除它,可能有人有权推送我的回购协议,我担心的是有坏人可能会破坏我的回购协议:(@hugemeow通常你需要私钥,可能是用一个强密码短语保护的?@hugemeow好的。我想说这是一个合理的问题,但在ssh密钥中添加密码,会大大降低这种可能性。使用一个硬密钥,最好是计算机生成的。@Moooeeep我知道hugemeow指的是一个他是普通人的案例在公用计算机上使用公钥/私钥对并忘记那里的私钥(在这种情况下,通行证会有所帮助),或者使用无法更改的现有私钥/公钥对的计算机(在这种情况下,即使添加通行证也不是选项)请参阅密码短语强化如果我的密钥是用密码短语创建的,那么我应该在每次推送到git repo时输入该密码,对吗?不,出于这个目的,您可以使用ssh代理。如果您使用git bash(linux/windows),那么请阅读此文档。当您使用(在windows中)时例如,TortoiseGit然后您应该启动ssh-agent.exe,您可以在putty.exe文件夹中找到它