【问题标题】:Git push origin master to remote repo asks for password three times and does nothingGit push origin master to remote repo 要求输入密码三次,但什么也没做
【发布时间】:2020-11-18 06:48:30
【问题描述】:

我有一个 NAS,我在其上使用命令 git --bare init 创建了一个远程存储库,然后我在我的机器上使用命令 git clone ssh://ID@PathToDistantRepo 克隆了这个存储库,它告诉我已经克隆了一个空存储库。

到目前为止,我没有任何问题。

我添加了一些东西,我做出了我的提交,一切都很好,没有错误,并且提交出现在历史记录中。

但是当我执行git push origin master 时,它会询问我三次 ssh 连接的密码,然后什么也没有。我让它运行了半个小时,提示仍然冻结,没有任何指示。

如果我添加“-verbose”选项,没什么新的。

如果我运行git remote show origin,它会询问我密码,然后给我看这个:

* remote origin
  Fetch URL: ssh://ID@PathToDistantRepo
  Push  URL: ssh://ID@PathToDistantRepo
  HEAD branch: (unknown)
  Local branch configured for 'git pull':
    master merges with remote master

我没有给你确切的网址,但它们很好,我在网上搜索,但我一定不知道如何放置正确的关键字,因为我找不到任何东西。

提前感谢您的帮助。

【问题讨论】:

  • 第一次尝试git push -u origin --all。我会尝试的另一个调试选项是在本地文件夹(而不是 NAS)上创建一个裸目录,使用相同的命令并查看它是否可以作为测试。另外 - 不确定,但既然你必须通过 SSH 连接到 NAS,那么我认为服务器是否有自己单独的 git 安装?但我不确定,是否需要运行服务来处理本地推送请求?我不确定这种交接是如何发生的......
  • 也许这是相关的:stackoverflow.com/a/32792843/4865273 Restarting ssh agent 和 sshd server 显然解决了这个问题。
  • 我已经测试了git push -u origin --all,但没有什么新东西。在查看如何重新启动 ssh 代理之前,我尝试在相同的设备上创建一个新的远程存储库,但其中几乎没有任何内容,只是一个文件夹和一个文本文件,并且 push 命令可以完美运行。我要推送的文件夹很重“1.05Go”,因为它是一个 Unity 项目。但我已经这样做了,它奏效了。我会让命令提示符工作很长时间,以防它很忙,直到所有文件都被扫描或我不知道。
  • 如果您的问题是特定于大型提交,请尝试增加 postBuffer。我在下面更新了我的答案。

标签: git


【解决方案1】:

基于https://stackoverflow.com/a/32792843/4865273 重新启动您的 SSH 代理和 sshd 服务器可能会有所帮助。

假设您使用的是 Linux 系统,请按如下方式重新启动您的 SSH 代理。

首先,找到代理PID:

eval "$(ssh-agent -s)"

这将返回 PID 号(例如 1234)。在下一个命令中使用这个数字来杀死代理:

kill -9 1234

要重启sshd服务,见https://www.cyberciti.biz/faq/howto-restart-ssh/ 如果你使用 Ubuntu (systemd),你可以简单地执行: sudo systemctl restart ssh

如果在推送大提交时特别出现问题,请尝试增加 postBuffer:

git config --global http.postBuffer 2097152000 

这可以解决类似的问题,见https://stackoverflow.com/a/26663047/4865273

当您被要求输入 SSH 密码 3 次时,另一种解决方案可能是设置 SSH 密钥进行身份验证,而不是使用密码。为此,请参阅https://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix

【讨论】:

  • 我在 Windows 10 上,这是我的结果:我找到了 SSH 服务,当我刚刚使用它们在新存储库上成功进行测试时,它们甚至都没有启动。所以我开始了它们,但它没有改变任何东西。
  • 我运行 git config --global http.postBuffer 2097152000 但它并没有改变任何东西。关于我被问了三次密码的事实,问题是在正常情况下他要求一次,一切都很好,我不介意。但是有三次不正常,没有更多的工作......提交的文件夹很重但填充了许多小文件,所以我预计会长时间推送,但它似乎甚至没有开始......我会尝试重新创建存储库并进行几次小提交,因为在创建时有很多,但之后只会是小推送
  • 需要在 NAS 端重新启动 sshd 服务(这是您从 windows 机器连接到的 SSH 服务器)。你试过吗?
【解决方案2】:

经过多次测试,问题很可能是由于 Git 无法处理许多大文件,因此将整个项目放在存储库中并不是一个好方法。 导致问题的是 Unity 包。

我必须更多地掌握 Git 的工作原理,以便更有针对性和更细致地使用它,只放对我有用的东西,我会再做一次。

感谢大家的帮助,这至少让我对 Git 和 SSH 有了更深入的了解和了解。

【讨论】:

  • 您可能需要考虑 git-lfs,它是 Git 的一个扩展,专门针对大文件存储。见git-lfs.github.com
猜你喜欢
  • 2011-08-07
  • 2012-09-09
  • 1970-01-01
  • 2021-07-14
  • 2012-09-21
  • 2011-07-13
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多