git push origin master:权限被拒绝(公钥)错误

时间:2014-01-17 07:10:36

标签: git amazon-ec2

我在我的amazon ec2 ubuntu服务器实例上设置了一个git repo。我一直在尝试将代码从本地计算机上推送到服务器的repo上。我遵循的步骤是:

ssh-add /path/to/myEC2publickey

在我的EC2实例

mkdir /path/my_project.git
cd /path/my_project.git
git init --bare

稍后在我的localhost上,

cd the_project 
git init git add . 
git commit -m "Initial git commit message" 
git remote add origin username@hostname.com:the_project.git 
git config --global remote.origin.receivepack "git receive-pack" 
git push origin master

由于我在执行最后一个命令时遇到Permission Deined(公钥)错误(即git push origin master),我使用包含在论坛上的步骤设置公钥 -

ssh-keygen -t rsa -C "myemail@somedomain.com"
eval 'ssh-agent -s'
ssh-add

我能够添加公钥,但我仍然面临权限被拒绝(公钥):错误。

我是git的新手,并一直期待将我的所有代码转换为git repo。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

您似乎错过了(或未包含在您的说明中)的一步是在服务器端发布公钥。
上传您的公共ssh密钥并将其添加到~username/.ssh/authorized_keys文件。

另外,首先使用没有密码短语的私钥(不需要将密钥添加到ssh代理中)来尝试(进行测试)

最后,请确保您的ssh密钥具有标准名称(id_rsaid_rsa.pub),并提供正确的保护:

最后,ssh -Tvvv username@hostname.com应该告诉你更多,如果前面的步骤没有解决问题。

答案 1 :(得分:2)

完整的程序是:

  1. 使用以下命令

    将EC2公钥添加到ssh列表中
    ssh-add /path/to/myEC2publickey
    
  2. 使用以下内容在EC2实例上创建git存储库 命令

    mkdir /path/my_project.git
    cd /path/my_project.git
    git init --bare
    
  3. 使用以下命令将系统上的本地文件连接到存储库 命令

    cd the_project 
    git init
    git add . 
    git commit -m "Initial git commit message" 
    git remote add origin username@hostname.com:the_project.git 
    git config --global remote.origin.receivepack "git receive-pack" 
    git push origin master
    
  4. 以用户身份创建公钥并将其添加到服务器 授权密钥

      

    您可以通过从中复制文件id_rsa.pub来执行此步骤   localhost到服务器〜/ .ssh / authorized_keys文件,如中所示   上一个答案。

  5. 如果您尝试git push,请执行以下步骤后,不应出现“权限被拒绝”错误。