ssh方式克隆GitHub repo

  • 官方教程在这里:
    Adding a new SSH key to your GitHub account,我主要整理一下流程和说一下我遇到的问题

此处特别感谢Claude2的悉心指导,tql

  • 首先遇到的问题就是 git clone 私有仓库的时候显示

    remote: Support for password authentication was removed on August 13, 2021.
    remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
    
  • 因为以前用vscode一直没遇到这个问题,就去问了问Claude,然后它让我用ssh方式

  • 我按照指示生成了ssh key,此时界面上会显示如下形式
    The key fingerprint is: xxx The key's randomart image is: xxx

    • 这里会有个小问题,系统里面可能原先有key了,那要防止覆盖的话得重新命名,可以一步到位

      ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/my_custom_key
      
    • 这个命令说明:

      • -t rsa 指定生成RSA算法的密钥(默认也是RSA)
      • -b 4096 指定密钥长度为4096 bit
      • -C “[email protected]” 设置注释文字,比如填写你的邮箱
      • -f ~/.ssh/my_custom_key 使用-f参数指定密钥的保存路径和文件名为~/.ssh/my_custom_key
        这样在执行keygen时,会在~/.ssh/目录下生成两个密钥文件:
        • my_custom_key 私钥
        • my_custom_key.pub 公钥
  • 然后去哪里查看呢?
    ls -al ~/.ssh

  • cat ~/.ssh/xxx你生成的xxx.pub,然后复制到github里面的位置就可以了

  • 我遇到的问题主要是接下来一直遇到下面这个

    Cloning into 'xxx'...
    [email protected]: Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    
    
  • 试了好多办法,比如ssh权限,修改pub权限等等都没用,后来一想,会不会是几个key有冲突,然后就把想法告诉Claude2,他说可能是,然后让我去照着下面的步骤做,然后就成功了!


以下为Claude2的回答

  • 本地存在多个SSH密钥对,这时需要指定使用哪一个私钥来访问GitHub。可以通过以下步骤来指定活动的SSH密钥:

    1. 在~/.ssh/目录下查看存在哪些私钥文件,可能有id_rsa、id_rsa_xxx等

    2. 在GitHub账号设置的SSH Keys页面,检查你添加的是哪个公钥(通过公钥内容可以匹配私钥名称)

    3. 编辑~/.ssh/config文件,添加以下内容指定私钥的路径:

      Host github.com
      
    IdentityFile ~/.ssh/id_rsa_xxx 
      ```
    

    将id_rsa_xxx替换为你在GitHub上使用的公钥对应的私钥文件名。

    1. 保存config文件。

    2. 终端中测试连接GitHub:

      ssh -T [email protected]
      

    现在SSH应该会自动读取指定的私钥来验证连接。

    1. 尝试再次克隆仓库,应该就能成功连接了。

    这种方式可以在有多个SSH密钥的情况下,指定使用哪一个私钥来连接特定的Git服务器,避免冲突。

以下为Claude2的回答

ssh -T [email protected] 这个命令是用于测试SSH连接GitHub服务器是否正常的。

其中:

  • ssh 是安全SHELL的客户端程序。

  • -T 参数表示不执行远程命令,仅测试连接。

  • [email protected] 表示使用git协议连接GitHub主机。

运行这个命令后,可能有以下几种输出结果:

  1. 连接成功,会看到"You’ve successfully authenticated" 等提示。这表示SSH连接正常。

  2. 授权失败,提示 “Permission denied”。表示GitHub拒绝了SSH密钥验证。

  3. 连接超时。网络问题导致无法连接上GitHub。

  4. 主机无法解析。域名无法解析到GitHub服务器IP。

  5. 其他错误信息。如SSH版本、配置不正确导致的问题。

所以这个测试连接的命令可以用来:

  • 检查SSH到GitHub的网络连通性。

  • 排查GitHub拒绝连接的问题。

  • 确认你的SSH密钥和配置正常有效。

  • 在修改SSH配置后重新验证设置是否生效。

通过这个命令返回的结果,可以确定是服务器端的问题,还是自己本地的SSH客户端配置问题。这有助于针对性地解决SSH无法连接的问题。

你可能感兴趣的:(基础技能,ssh,github)