通过SSH推送到远程存储库时“访问被拒绝”

时间:2009-05-27 01:46:10

标签: git ssh

我是Git的新手,似乎在通过网络推送到存储库时遇到问题 以下是我重新创建问题的方法:

  1. 在计算机上创建一个新的Git存储库以推送到

    mkdir ~/git/test.git
    cd !$
    git --bare init
    
  2. 在我的本地计算机上,然后创建一个新的Git存储库并向其添加一个随机文件:

    mkdir test
    git init
    touch TEST
    git add .
    git commit -m "initial commit"
    
  3. 然后通过以下方式添加远程计算机:git remote add origin ssh://user@site.com/~/git/test.git

  4. 然后我尝试通过以下方式将本地存储库推送到远程:git push origin master
  5. 当我这样做时,这就是我得到的:

    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没问题

    我一直试图解决这个问题两天了,任何帮助都会受到赞赏

6 个答案:

答案 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头。在这个存储库有一些奇怪的行为,当一些用户可以,但有些人无法写入它获取访问被拒绝的消息。