使用Git clone克隆基于SSH协议的GitHub远端仓库到本地教学
简介
我们经常逛GitHub的小伙伴都会发现,clone的时候都会有几个选项,常用的就是https的方式,或者GitHub
CLI,那么还有一个ssh方式一般用的不是很多,那么如何使用ssh方式怎么克隆远端仓库,一起来学习一下吧
介绍
https的方式:
使用 HTTPS url 克隆对新手是最方便的,复制HTTPS url,然后到 git Bash 里面直接用 clone 命令就可以克隆到本地了,但是每次 fetch 和 push 代码都需要重复的输入账号和密码,这就是https方式繁琐的地方
ssh的方式:
在使用 SSH url 克隆时需要提前配置添加好的SSH key,需要在克隆之前先配置和添加好SSH key,不然才会报错permission denied (publickey),SSH 在fetch 和push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的
Github CLI方式:
这个不用多说,github cli是github的命令行工具,可以使用命令来操作github上的相关东西,可以想象为网页版是图形化界面,github cli是使用命令行的
教程
查看是否有ssh key
其他就不展开讲了,主要是讲如何配置ssh key和 SSH url 克隆的操作详解,
拿win10举例,打开CMD,敲命令 >> dir 查看目录,我这里是已经配置好ssh key的,显示有.ssh的文件夹,文件夹内有id_rsa.pub 或 id_dsa.pub 文件
linux的话会检测有没有ssh key,如果没有则会显示不存在该文件夹,如果有则可以显示文件夹内的 id_rsa.pub 或 id_dsa.pub 文件
cd ~/.ssh
ls
生成秘钥
使用下方命令生成秘钥,一路回车,我是没给ssh key设置密码的,当然生成的过程中你也可以设置一个密码
ssh-keygen -t rsa -C "替换成你github注册的邮箱"
ssh-keygen参数解释
-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。(一定要是关联你 GitHub 的注册邮箱,也就是用户名)
-f 指定密钥文件存储文件名。
配置ssh-key
这里需要你有github的账号,https://github.com/login 我们登陆后点击右上角头像——>settings
SSH adn GPG keys——>SSH keys——>New SSH key
进入到.ssh文件夹内,打开id_rsa.pub文件,复制我们生成的秘钥
再回到我们刚才的那个网页github的新建ssh keys的地方,粘贴进去,点add ssh key即可
测试
测试SSH Key,敲命令后,有下方的返回信息则正常
ssh -T -v git@github.com 反馈信息 OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5 debug1: Connecting to github.com [20.205.243.166] port 22. debug1: Connection established. debug1: identity file C:\\Users\\kt/.ssh/id_rsa type 0 debug1: key_load_public: No such file or directory debug1: identity file C:\\Users\\kt/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file C:\\Users\\kt/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file C:\\Users\\kt/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file C:\\Users\\kt/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file C:\\Users\\kt/.ssh/id_ecdsa-cert type -1
随便找个项目进行克隆测试一下
git clone git@github.com:NVlabs/instant-ngp.git