在AWS上设置远程git存储库并从Windows

时间:2018-05-06 08:13:01

标签: git amazon-ec2 ssh putty

我正在尝试在AWS上的Ubuntu实例上创建一个远程存储库,然后从Windows上的本地存储库中推送。我按照教程here

我按照以下步骤操作:

  1. 我在AWS上创建了一个Ubuntu实例。
  2. 我做了ssh-add path/to/myKP.pem。 它给了我一个错误Could-not-open-a-connection-to-your-authentication-agent

  3. 然后我运行了这个eval $(ssh-agent)并再次执行了第2步。现在它说身份添加

  4. 我使用 myKP.pem 生成了一个.ppk文件,然后用它来用puth ssh进入我的ubuntu实例。

  5. 执行以下命令:apt-get updateapt-get install git-core

  6. mkdir repo.gitcd repo.git以及git init --bare

  7. 然后,在我的本地目录中,我运行了git initgit add .以及git commit -m "Init commit"

  8. git remote add origin ubuntu@publicIP:/repo.git

  9. git config --global remote.origin.receivepack "git receive-pack"

  10. git push origin master

  11. 然后我收到了这个错误:

    fatal: 'ubuntu@publicIP/repo.git' does not appear to be a git repository
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    

    有人可以告诉我在我的Ubuntu实例上创建一个空的git存储库然后从我的本地存储库推送时应遵循的步骤。

    注意我正在使用Windows。

    编辑:我是否还需要在我的Ubuntu实例上存储 .pem 文件?

    如果对某些人来说这很容易,我很抱歉,但我是SSH和AWS的新手。

2 个答案:

答案 0 :(得分:3)

说明似乎是正确的。以下步骤顺序应该有效。

EC2实例

ssh-add path/to/local/ec2.pem 

本地计算机ssh-add

这是在设置EC2实例时指定的.pem文件。它不需要在EC2实例上。

ssh-add

对于Windows,您可以下载GitHub Desktop For Windows。安装后,ec2.pem应该可用。按照这些stepsssh auth agent文件(私钥)添加到mkdir test-repo cd test-repo git init echo "This is a test repo" > README.md git add README.md git commit -m "Added readme file" git remote add origin ec2-user@aws-host-name-or-ip-here:/path/to/test-repo.git git remote -v #for-verification git config --global remote.origin.receivepack "git receive-pack" git push origin master Windows标签 - 部分:将SSH密钥添加到ssh-agent

本地计算机推送到存储库

invalidateCache() {
    let now = Date.now()

    return keys(cacheStore).then((keys) => { // 1st
        keys.map((key) => {
            return this.getCachedResponse(key).then((item) => { // 2nd
                if (item.expire < now) {
                    this.deleteCache(key)
                }
            })
        })
    }).catch((err) => {
        console.error(err)
    })
}

答案 1 :(得分:1)

SSH有两种登录方式:使用用户名/密码组合,或使用私钥/公钥组合。关于公钥/私钥的好处在于,在设置之后,您不必每次为git命令键入用户名/密码(当您执行git push / pull到SSH远程服务器时)。

如果你使用PuTTY,它有一个工具puttygen(c:\ Program Files \ PuTTY \ puttygen.exe),它可以帮助你在Windows机器上生成密钥。它有2个按钮:“保存公钥”是将您的公钥保存到像“DragonBorn.pem”这样的文件中。 “保存私钥”是将公钥和私钥保存在一个文件中,如“DragonBorn.ppk”。

通常“pem”只包含公钥,您只需要将该密钥复制到服务器(服务器不应该访问您的私钥)。如果将公钥添加到服务器上的可信密钥列表(authorized_keys),服务器将允许您输入密码。

有一些工具可以帮助您将密钥复制到服务器,但实际上很容易手动完成:

  1. 在puttygen.exe里面有一个文本字段,上面写着“粘贴的公钥......”,复制一遍。
  2. 使用您的用户名/密码
  3. 使用PuTTY登录SSH服务器
  4. 在SSH终端中打开文件~/.ssh/authorized_keys。通常你可以使用vim,输入命令:vi ~/.ssh/authorized_keys
  5. 将您的公钥从puttygen粘贴到SSH终端的文本编辑器中。如果使用vim,首先按“i”(这将开始在vi中编辑),然后单击鼠标右键进行粘贴(这是PuTTY自己的快捷方式)。
  6. 保存文件并退出。如果使用vim按“escape”(停止编辑),然后按住“shift”并按“z”2次(如“shift-z-z”)。
  7. 现在已经设置了服务器。

    不是结束:)) 要设置客户端,您需要告诉PuTTY使用您的私钥“DragonBorn.ppk”登录。 这是在左侧的Connection - SSH - Auth类别的PuTTY配置中完成的,右侧是“用于身份验证的私钥文件” - 这是您指定ppk的位置。

    这不是很直观,但在PuTTY中你必须先从“已保存的会话”列表中选择你的会话,点击“加载”,然后你修改设置(例如指定“ppk”),然后去回到“会话”并按“保存”按钮。这将为将来节省它。