【问题标题】:.ssh config with amazon ec2 and git.ssh 配置与亚马逊 ec2 和 git
【发布时间】:2013-01-03 14:57:13
【问题描述】:

我在从亚马逊 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

提前致谢。

【问题讨论】:

    标签: git amazon-ec2 config public-key


    【解决方案1】:

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

    更新

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

    【讨论】:

    • 听起来不错,而且对你有用,所以 +1。我的回答不够具体。
    【解决方案2】:

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

    参见“Git SSH authentication”,但也知道如果任何父目录对组或世界是可写的,ssh 将不起作用。


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

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

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

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

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

    另一个小技巧(在this thread 和这个forum 之后)是检查是否存在任何 DNS/DHCP 问题(有点像“Working with git behind a dynamic DNS”)。

    Host ec2server
       Hostname 1xx.xxx.xxx.xxx # ip address of ec2XXX.compute-1.amazonaws.com
       User ubuntu
       IdentityFile ~/.ssh/mykey.pem
    

    【讨论】:

    • 但是父目录是主目录
    • @Pio 你的意思是你的config 文件在/home/yourLogin,而不是/home/yourLogin/.ssh
    • @Pio 请参阅 stackoverflow.com/a/10042145/6309stackoverflow.com/a/8172628/6309 以获取 ssh 配置文件的示例。
    • @Pio 那么,我的答案是正确的。
    • 阅读了 100 篇不同的文章后,使用“git clone ec2server:/var/www/project.git”为我解决了这个问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多