我是Git的新手,似乎在通过网络推送到存储库时遇到问题 以下是我重新创建问题的方法:
在计算机上创建一个新的Git存储库以推送到
mkdir ~/git/test.git
cd !$
git --bare init
在我的本地计算机上,然后创建一个新的Git存储库并向其添加一个随机文件:
mkdir test
git init
touch TEST
git add .
git commit -m "initial commit"
然后通过以下方式添加远程计算机:git remote add origin ssh://user@site.com/~/git/test.git
git push origin master
当我这样做时,这就是我得到的:
fatal: protocol error: bad line length character <- sometimes not there
Access denied
Access denied
Access denied
Access denied
FATAL ERROR: Server sent disconnect message
type 2 (protocol error):
"Too many authentication failures for user"
我在XP机器上使用cygwin并试图推送到unix服务器。
我也在我家里的两台电脑之间尝试过,我遇到了同样的问题,顺便说两句都是Windows机器。
我已通过SSH设置无密码登录,我ssh
ssh user@site.com
没问题
我一直试图解决这个问题两天了,任何帮助都会受到赞赏
答案 0 :(得分:5)
问题可能是〜在ssh URI中使用它时不能正确扩展。您需要在ssh URI中指定远程计算机上git存储库的绝对路径,如下所示:
ssh://user@site.com/home/user/git/test.git
答案 1 :(得分:2)
我遇到了类似的问题,但解决方案对我的情况有所不同。我得到的错误信息是:
$> git push -v unfuddle master
Pushing to git@subdomain.unfuddle.com:subdomain/repo.git
Received disconnect from 174.129.246.239: 2: Too many authentication failures for git
fatal: The remote end hung up unexpectedly
我无法弄清楚问题是什么,ssh -vv也没有显示任何东西。我已经在〜/ .ssh / config
中有了这个文本Host subdomain.unfuddle.com
User git
IdentityFile ~/.ssh/unfuddle-subdomain-key
问题是,Unfuddle的SSH服务器配置为在尝试一定数量的SSH密钥后拒绝访问。即使我有一个特定的IdentityFile设置,我的SSH客户端由于未知原因,按顺序尝试所有本地SSH密钥,直到Unfuddle拒绝访问。解决方案是将SSH“IdentitiesOnly”配置选项设置为“yes”,这表示本地SSH客户端只发送一个IdentityFile而不发送其他内容。
# The fixed ~/.ssh/config line
Host subdomain.unfuddle.com
User git
IdentitiesOnly yes
IdentityFile ~/.ssh/unfuddle-subdomain-key
参考:http://railspikes.com/2010/2/1/fixing-the-heroku-too-many-authentication-failures-for-git-problem
希望这有助于某人。
詹姆斯
答案 2 :(得分:0)
我不确定您的访问问题,但
中的路径git remote add origin ssh://user@site.com/~/git/test.git
让我担心。你有什么用
git remote add origin ssh://user@site.com/git/test.git
另请注明git push -v ...
答案 3 :(得分:0)
尝试使用
ssh://user@site.com:/home/user/git/test.git
答案 4 :(得分:0)
在你的情况下,问题可能是〜字符。使用:
git remote add origin user@site.com/git/test.git
但是,当用户名(“user @”)部分丢失时,我也看到了这个问题(总是在Windows客户端计算机上),所以有这个问题的其他人也应该检查一下。
答案 5 :(得分:0)
解决此类问题的另一个关键。在我们的例子中,原因是具有repositiories和权限的gitolite.conf文件。有人用Windows Notepad编辑了它,它添加了BOM头。在这个存储库有一些奇怪的行为,当一些用户可以,但有些人无法写入它获取访问被拒绝的消息。