• 多个SSH私钥配置不当导致Git push 失败的分析及解决方法


    今天写了几笔项目,推给coding.net的时候AS报错。在更新之前这个是老毛病了,终端上手动push一下就好。

    不过这次不同,终端上显示:

    Permission denied (publickey).
    fatal: 无法读取远程仓库。
    
    请确认您有正确的访问权限并且仓库存在。
    

    想起最近在弄VPS,可能是SSH Key的设置上出了问题,于是检查一下(指定了私钥位置):

    ssh -i ~/.ssh/id_rsa  -T git@git.coding.net
    

    回复的信息正常,说明SSH连接没问题:

    Coding 提示: Hello NeroS, You've connected to Coding.net via SSH. This is a deploy key.
    

    然后再推送一下,怪了,依然fail。

    仔细回想一下,在给VPS设置SSH密钥连接的时候,为了防止覆盖掉原来的私钥,特地换了一个目录生成后拷贝过去,最后好像还在某个配置文件里添加了一行。那里应该是SSH连接是寻找私钥的默认目录,翻了翻,原来是这个:

    /etc/ssh/sshd_config
    

    关键部分如下:

    #   CheckHostIP yes
    #   AddressFamily any
    #   ConnectTimeout 0
    #   StrictHostKeyChecking ask
    #   IdentityFile ~/.ssh/identity
        IdentityFile ~/.ssh/id_rsa
    #   IdentityFile ~/.ssh/id_dsa
    #   IdentityFile ~/.ssh/id_ecdsa
    #   IdentityFile ~/.ssh/id_ed25519
        IdentityFile ~/.ssh/id_rsa_vps
    #   Port 22
    

    其中大多数都是被注释掉的,默认不起作用。配置VPS的时候我加了最下面的私钥,原来的没有动。

    将默认的 ~/.ssh/id_rsa 前面的注释去掉之后,就一切正常了。经测试,连接两个不同的服务器均无需单独指定私钥文件,由此也可以得出,该处的配置确实是默认的寻找私钥的目录。如果有多个私钥同时使用,添加在此处即可。

  • 相关阅读:
    B. Random Teams(Codeforces Round 273)
    Unity3d中的属性(Attributes)整理
    Python 的 Flask 框架安装应用
    动态SQL(章节摘要)
    Linux系统PWM驱动【转】
    嵌入式电路中的BUCK VS LDO【转】
    git用法-打补丁【转】
    展讯7731C_M Android6.0 充电指示灯实现(一)------关机充电实现【转】
    Android 充电信息的获取【转】
    2.Android硬件访问服务编写系统代码【转】
  • 原文地址:https://www.cnblogs.com/NeroSong/p/9054226.html
Copyright © 2020-2023  润新知