Git 远程推送不工作,SSH 密钥问题

Git remote push not working, SSH key issues

我有一个要推送到的 Amazon EC2 网络服务器。它的 SSH 连接使用没有密码的密钥进行身份验证。我已经像这样设置了本地机器的 ssh 配置文件

Host web                                                                        
Hostname <path to host>                                                           
User ubuntu                                                                     
IdentityFile <path to key>                                   
IdentitiesOnly yes

当我这样做时

ssh web

我登录正常,但是当我尝试登录时

git push web

我明白了

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

在本地机器上

Connection closed by <local machine's IP> [preauth]

在服务器上的 ssh auth.log 文件中。我已经一遍又一遍地检查服务器和本地的 SSH 和 git 文件,我就是无法获取它。我可能缺少什么?

.git 本地配置为

[core]                                                                          
    repositoryformatversion = 0                                             
    filemode = true                                                         
    bare = false                                                            
    logallrefupdates = true                                                 
[remote "origin"]                                                               
    url = https://<bitbucketpath>.git    
    fetch = +refs/heads/*:refs/remotes/origin/*                             
[branch "master"]                                                               
    remote = origin                                                         
    merge = refs/heads/master                                                 
[remote "web"]                                                                  
    url = ubuntu@<server ip>:/home/ubuntu/git/test.git                  
    fetch = +refs/heads/*:refs/remotes/web/*         

repo 归 ubuntu 所有,这是将通过配置中指定的 ssh 登录的用户。

您的 ssh 配置块以 Host web 开头。当您使用 ssh 对此进行测试时,您 运行 命令 ssh web。 SSH 在 ssh 配置文件中查找 "web" 的条目并使用这些参数。

但是,在 git 中,您的遥控器是

[remote "web"]                                                                  
    url = ubuntu@<server ip>:/home/ubuntu/git/test.git                  
    fetch = +refs/heads/*:refs/remotes/web/*         

在这里,您使用的不是主机名,而是 IP 地址。您需要更新您的 ssh 配置,以便它知道为此 IP 地址使用所需的参数,而不仅仅是主机名 "web"。只需将 IP 添加到您的 Host 条目。

Host web 1.2.3.4

(显然,用真实 IP 地址代替 1.2.3.4。)