Git无法使用私有ssh文件连接到远程

时间:2018-01-27 05:34:45

标签: git ubuntu ssh

我正在使用(相对)新的Git sshCommand:

git config core.sshCommand  'ssh -i ~/Documents/keydir/key.pem'

这导致以下配置:

sshCommand = ssh -i ~/Documents/keydir/key.pem

但是当我尝试推送到服务器时(顺便说一句,我正在使用主目录。是否必须是www目录?)

[remote "origin"]
        url = ssh://ubuntu@myserver.com:22/home/ubuntu/myrepo.git

[remote "origin"]
            url = ssh://ubuntu@myserver.com/home/ubuntu/myrepo.git

它返回:

git push remote master
fatal: 'remote' does not appear to be a git repository
fatal: Could not read from remote repository.

...错误。

无法弄明白。

我尝试过使用“〜/ myrepo.git”和“/home/ubuntu/myrepo.git”,我也试过“url = ssh://ubuntu@myserver.com:/ home / ubuntu / myrepo.git“

我也尝试在/ var / www文件夹中启动一个新的git ...

似乎没什么用。并且myrepo.git肯定存在于ubuntu主文件夹中。

有什么想法吗?

编辑:我的完整.git / config文件:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
        sshCommand = ssh -i ~/Documents/keydir/key.pem
[remote "origin"]
        url = ssh://ubuntu@myserver.com:22/home/ubuntu/mygit.git
        fetch = +refs/heads/*:refs/remotes/origin/*

编辑:将本地(2.5.4)和远程(2.7.4)版本的Git更新到最新版本(2.16.1)解决了这个问题。

2 个答案:

答案 0 :(得分:0)

我相信您的git push命令(“git push remote master”)不正确。

请尝试使用git push origin master

(您可能还需要验证myrepo.git文件实际上是git repo,由git命令初始化。您指定的URL似乎遵循the docs中指定的正确格式。)

答案 1 :(得分:0)

首先需要检查是否可以ssh到该服务器:

ssh -Tv -i ~/Documents/keydir/key.pem ubuntu@myserver.com

换句话说,您必须确保~ubunutu/.ssh/authorized_keys文件的key.pub public 键。

然后命令必须是:

 git push -u origin master

这只是您第一次推送该分支:请参阅“Why do I need to explicitly push a new branch?

URL正确:添加或删除端口22无关紧要,因为它是默认的SSH端口。

作为per discussion,两端(本地和远程)使用相当旧版本的Git(MacOS上为2.5.4,Ubuntu上为2.7.4)。 升级它们都有帮助。