17

我从亚马逊 ec2 服务器克隆 git 存储库时遇到了一个奇怪的问题。它在我的一台运行 ubuntu 12.04 的计算机上运行没有任何问题,而在另一台使用 12.10 的计算机上它给了我一个错误:

ssh: Could not resolve hostname ec2server: Name or service not known  
fatal: The remote end hung up unexpectedly

就像它无法识别我的配置文件一样。我使用以下 git 命令克隆:

sudo git clone ec2server:/var/www/project.git

或者

sudo git clone ec2xxx.compute-1.amazonaws.com:/var/www/project.git

这两个配置文件在两台计算机上是相同的,在 ~./ssh 中,内容如下:

Host ec2server
   Hostname ec2XXX.compute-1.amazonaws.com
   User ubuntu
   IdentityFile ~/.ssh/mykey.pem

如果我用实际地址替换 ec2server,我会收到以下错误:

Cloning into 'project'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

提前致谢。

4

2 回答 2

20

通常是权限问题。
您的chmod配置文件的父目录可能在两台计算机之间有所不同。
(而且我说的不仅仅是直接父目录.ssh,还包括所有父目录)

请参阅“ Git SSH 身份验证”,但也知道如果任何父目录对组或世界是可写的,则 ssh 将不起作用。


另请注意,您的第二个命令不正确,应该是:

git clone ubuntu@ec2xxx.compute-1.amazonaws.com/var/www/project.git

no ' :'(a ' :' 表示使用config文件,具有类似scp- 的语法)

~/.ssh/id_rsa只有当你有并且~/.ssh/id_rsa.pub虽然它才能工作。
如果你有 mykey.pem,那么你需要一个configssh 文件来知道你的公钥和私钥在哪里,这意味着只有这样才能工作:

git clone ec2server:/var/www/project.git

另一个检查(在这个线程和这个论坛之后)是检查是否存在任何 DNS/DHCP 问题(有点像“在动态 DNS 后面使用 git ”)。

Host ec2server
   Hostname 1xx.xxx.xxx.xxx # ip address of ec2XXX.compute-1.amazonaws.com
   User ubuntu
   IdentityFile ~/.ssh/mykey.pem
于 2013-01-20T10:39:22.680 回答
6

最近我不得不重新安装保存工作配置的系统,但我没有设法复制它,所以这与 linux 版本无关(很可能)。我设法做的是,我设法使用提到的原始脚本将存储库克隆到我的主目录中。在这里它正确地选择了名称,但是如果我导航到 /var/www,就像我之前所做的那样,它只会给我同样的错误:can ec2server not found ... 。所以我认为问题与权限+命令组合有关。如果有人能弄清楚如何使它起作用,我会将他的回答标记为正确答案,直到那时我将我的回答标记为正确答案,因为这是最接近正确的答案。

更新

我想出了问题所在:我必须更改 /var/www 文件夹的权限才能克隆到该目录。现在是 777(仅用于本地机器上的开发)。

于 2013-01-23T18:14:12.527 回答