可以通过 SSH 连接到服务器,但不能 git push



我无法推送到存储在我的 Amazon ec2 实例上的远程 git 存储库。

我的本地sshconfig文件有一个主机条目,如下所示:

Host ec2
HostName ec2-54-89-205-210.compute-1.amazonaws.com
User ec2-user
IdentityFile ~/.ssh/ec2TestB

所以我可以ssh ec2运行命令,我将成功连接到ec2.

接下来,我在root文件夹中的ec2上创建了一个名为testGitRootgit repo。 在我的本地机器上,我创建了一个名为testGitLocalgit repo。 然后我添加带有git remote add origin ec2user@ec2-54-89-205-210.compute-1.amazonaws.com:/root/testGitRootec2repo(我也尝试过没有ec2user@部分..不确定是否需要(。

当我运行时git push origin master我得到:

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

所以我的问题是我在这里错过了什么概念? 如果我能够通过 ssh 与ssh ec2连接,那么为什么我不能推送我的存储库? 我不清楚的一件事是我采取的 git 设置步骤究竟是如何利用ssh的。 通常,我总是推送到 github,在这种情况下,我会获取sshurl 并将其设置为我的遥控器。 在这种情况下,我只是将我的ec2repo设置为远程,该网址只是ec2Domain:path/to/git/repo。所以我不确定即使git push origin master是否正在使用ssh,如果是,为什么当ssh ec2命令不使用时,它似乎会故障转移公钥?

使用用户ec2-user设置存储库,如ssh_config文件中所示:

Host ec2
User ec2-user

但是您将遥控器设置为使用不同的用户名,ec2user

git remote add origin ec2user@ec2 ...

你说 ssh 有效,但 git 不起作用。因此,git 可能是用户名不正确的那个。

要修复它,只需更改远程 URL,使其具有正确的用户名:

git remote set-url origin 
ec2-user@ec2-54-89-205-210.compute-1.amazonaws.com:/root/testGitRoot

此错误消息表示身份验证失败。

以下是可能导致以下情况的常见原因:

  • 尝试使用错误的密钥进行连接。您确定此实例使用此密钥对吗?
  • 尝试使用错误的用户名进行连接。ubuntu是基于Ubuntu的AWS发行版的用户名,但在其他一些发行版上它是ec2-user的(在某些Debians上admin(。
  • 尝试连接错误的主机。这是您尝试登录的正确主机吗?

请注意,如果您弄乱了 EC2 实例上的/home/<username>/.ssh/authorized_keys文件,也会发生 1. 的情况。

关于 2.,AMI 映像描述中通常缺少有关您应该使用哪个用户名的信息。但您可以在 AWS EC2 文档中找到一些内容。

要点 4. : http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

相关内容

最新更新