使用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

THE END