zoukankan      html  css  js  c++  java
  • 多个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 前面的注释去掉之后,就一切正常了。经测试,连接两个不同的服务器均无需单独指定私钥文件,由此也可以得出,该处的配置确实是默认的寻找私钥的目录。如果有多个私钥同时使用,添加在此处即可。

  • 相关阅读:
    scrapy--Cookies
    python--signal
    python--redis
    TCP/IP 协议
    python--Wrapper
    python--inspect
    python--pexpect
    linux 特殊命令(一)
    day45 Pyhton 数据库Mysql 02
    day44 Pyhton 数据库Mysql
  • 原文地址:https://www.cnblogs.com/NeroSong/p/9054226.html
Copyright © 2011-2022 走看看