• 说明
    • 设置ssh连接
    • 可能遇到的问题

    说明

    与本地仓库相对应的就是远程仓库,有了远程仓库才方便多人协作。

    首先,请先注册GitHub账号或者Gitee账号(若你不知道什么是GitHub或者Gitee)

    一般可以通过http连接,但是速度不是很快,Git原生支持ssh

    设置ssh连接

    • 打开Git Bash,执行:
    1. ssh-keygen -t rsa -C "youremail@example.com"
    2. #密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。这里使用的是rsa
    3. #同时在密钥中有一个注释字段,用-C来指定所指定的注释,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息
    4. #所以在这里输入自己的邮箱或者其他都行。
    5. #输入完毕后程序同时要求输入一个密语字符串(passphrase),空表示没有密语
    6. #接着会让输入2次口令(password),空表示没有口令
    7. #3次回车即可完成当前步骤
    • 打开你的用户文档c盘>用户>自己的用户名>.ssh,在用户目录下会生成一个.ssh隐藏目录,目录下有这两个文件:
    1. id_rsa #私钥(不可泄漏)
    2. id_rsa_pub #公钥
    • 登陆GitHub,打开Account settingsSSH and GPG Keys页面,然后,点New SSH Key,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

    当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

    若感觉ssh连接比较麻烦,请忽略上述配置,直接使用http连接即可

    可能遇到的问题

    如果推送代码时出现下述情况:

    1. $ git push -u origin master
    2. The authenticity of host 'github.com (52.74.223.119)' can't be established.
    3. RSA key fingerprint is SHA256:ntsahdjsab78bdagf3u1TFAN8sbhGAD882bfysabff.
    4. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    5. Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts.
    6. Connection reset by 52.74.223.119 port 22
    7. fatal: Could not read from remote repository.
    8. Please make sure you have the correct access rights
    9. and the repository exists.

    解决办法:

    删除用户目录下的.ssh文件夹,重新按照上述内容生成ssh密钥对,然后部署在GitHub上,打开git bash,执行ssh -T git@github.com,结果如下:

    1. $ ssh -T git@github.com
    2. The authenticity of host 'github.com (52.74.223.119)' can't be established.
    3. RSA key fingerprint is SHA256:ntsahdjsab78bdagf3u1TFAN8sbhGAD882bfysabff.
    4. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    5. Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts.
    6. Hi rumosky! You've successfully authenticated, but GitHub does not provide shell access.