使用ssh访问github

git中使用https访问github经常会报错,改为使用ssh之后基本再出现过问题

使用ssh连接github具体过程和vscode配置免密登录过程差不多

  1. 本地生成ssh的公钥和密钥 (ssh-keygen)

  2. 将公钥(.pub)上传至服务器端(~/.ssh/authorized_keys)

    # 一行命令将本地公钥上传至服务器
    cat .ssh/id_rsa.pub | ssh pi 'cat >> ~/.ssh/authorized_keys'
    
  3. 配置登录时使用本地的密钥文件进行登录验证

    • 首先启动ssh-agent

        # start the ssh-agent in the background
        $ eval "$(ssh-agent -s)"
        > Agent pid 59566
      
    • 将密钥添加至ssh-agent

      $ ssh-add ~/.ssh/yourKeyFile
      

配置完成后即可在git中使用ssh访问远程仓库

image-20210721215319934

详细过程见github英文教程Connecting to GitHub with SSH - GitHub Docs


踩坑记录

  1. github有两种key,一种是ssh-key和账号关联,一种是deployment-key和仓库关联
  2. ssh-key在github账号->setting中查看,deployment-key在仓库->setting中查看
  3. ssh-key和deployment-key不能重复,如果你在仓库中添加了一个key之后又想在账号中添加这个key页面会报错key is already used 同时页面中还不会显示这个key,反之亦然。
  4. 如果想把一个deployment-key变成账号的ssh-key则需要找到使用这个key的仓库-》删除—》重新添加,很麻烦。故如果没有特殊需求,只是用ssh克隆仓库,建议一律使用和账号统一关联的ssh-key。