.ssh配置亚马逊ec2和git

Pio*_*Pio 11 git config amazon-ec2 public-key

从亚马逊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
Run Code Online (Sandbox Code Playgroud)

这就像它没有识别我的配置文件.我使用以下git命令克隆:

sudo git clone ec2server:/var/www/project.git
Run Code Online (Sandbox Code Playgroud)

要么

sudo git clone ec2xxx.compute-1.amazonaws.com:/var/www/project.git
Run Code Online (Sandbox Code Playgroud)

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

Host ec2server
   Hostname ec2XXX.compute-1.amazonaws.com
   User ubuntu
   IdentityFile ~/.ssh/mykey.pem
Run Code Online (Sandbox Code Playgroud)

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

Cloning into 'project'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Von*_*onC 11

它通常是一个许可问题.
chmod您的配置文件的父目录可能是您的两台计算机之间的不同.
(我不只是谈论直​​接的父目录.ssh,而是所有的父目录)

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


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

git clone ubuntu@ec2xxx.compute-1.amazonaws.com/var/www/project.git
Run Code Online (Sandbox Code Playgroud)

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

只有你有~/.ssh/id_rsa,~/.ssh/id_rsa.pub但它只能工作.
如果你有mykey.pem,那么你需要一个configssh文件来知道你的公钥和私钥在哪里,这意味着只有这个可以工作:

git clone ec2server:/var/www/project.git
Run Code Online (Sandbox Code Playgroud)

另一个chack(在此主题和此论坛之后)检查是否存在任何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
Run Code Online (Sandbox Code Playgroud)


Pio*_*Pio 5

最近我不得不重新安装具有工作配置的系统,我没有设法复制它,所以它不是关于linux版本(非常可能).我设法做的是,我设法使用提到的原始脚本将存储库克隆到我的主目录中.在这里,它正确地选择了名称,但是如果我导航到/ var/www,我以前做过的,它只是给了我同样的错误:可能找不到ec2server .... 所以我认为问题必须与权限+命令组合做一些事情.如果有人能弄清楚如何让它发挥作用,我会将他的回答标记为正确答案,直到那时我才将其标记为正确答案,因为这是最接近正确的答案.

UPDATE

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