通过ssh连接GitHub远程仓库
跟gitee相同,我们现在github中创建一个仓库用于演示(进入github可能要翻墙,也可以是用加速器,比如watt),然后获取仓库的url然后,在一个空文件夹下打开Bash窗口,完成init以及用户级别的设置完成之后,我们连接github的远程仓库,如下紧接着,我们拉去远程仓库的文件,如下(注意,这里有的人可能不是main,主要看的是你在github中仓库的分支名,有的人master也可以)
一、HTTPS方式
跟gitee相同,我们现在github中创建一个仓库用于演示(进入github可能要翻墙,也可以是用加速器,比如watt),然后获取仓库的url
然后,在一个空文件夹下打开Bash窗口,完成init以及用户级别的设置
git init
git config --global user.name "zhangsan"
git config --global user.email "zhangsan@126.com"
完成之后,我们连接github的远程仓库,如下
git remote add origin https://github.com/xxxx/testGitHub.git
紧接着,我们拉去远程仓库的文件,如下(注意,这里有的人可能不是main,主要看的是你在github中仓库的分支名,有的人master也可以)
git pull origin main

将仓库中的readme文件和.gitignore文件拉取下来

推送代码到远程仓库
git push origin master
执行命令之后会打开连接GitHub的页面

我们点击Sign in with your browser之后输入github密码连接成功之后。看Bash窗口会自动完成push操作

我们可以看到A.txt文件被推送到github上面。

二、ssh方式
SSH公钥:这里又分两种,一种是仓库公钥,另一种是账户公钥,两个的作用域不同
账户SSH公钥
首先文件夹初始化,并创建账户和邮箱
git init
git config --global user.name "lisi"
git config --global user.email "lisi@126.com"

在Bash窗口通过命令 "ssh-keygen"生成 SSH Key:
ssh-keygen -t ed25519 -C "GitHub SSH Key"
其中,"-t" 代表公钥的类型,"-C"为注释
输入上述指令后,连续按3次回车键即可

之后,通过 "ls ~/.ssh/" 指令来查看SSH公钥和私钥,会输出

其中,前者是私钥,后者是公钥,我们读取公钥文件
cat ~/.ssh/id_ed25519.pub
输出如下所示
ssh-ed25519 AAAA***CB Gitee SSH Key
将公钥复制,后面会用
现在我们进去github,「Setting」->「SSH and GPG key」->「SSH keys」->「New SSH Key」
将刚刚复制的公钥粘贴到公钥文本框,并为该公钥添加一个标题.这里需要将查到的全部内容复制到内容区中,点击Add SSH Key。
完成上述之后回到Bash,输入 "ssh -T git@github.com"测试绑定是否成功,如下

我们通过SSH连接github的远程仓库,如下
git remote add origin git@github.com:jsjsazxd/testGitHub.git
之后完成拉取项目以及提交内容到项目中


提交文件时,使用了git push -u origin main.发生报错

输入git log 查看内容是否已经完成提交

之后输入git branch查看分支内容

只存在一个master分支,因此输入git push -u origin master完成内容推送


三、https和ssh的区别(面试题)
1、https和ssh的传输速度不同
https的速度要相对于ssh的传输速度要快一些
2、https和ssh的安全性不同
https是通过用户名和密码进行传输的,ssh是通过密钥进行传输的,因此ssh的安全性更高;即使ssh的传输速度要慢于https,但是大部分情况会因为考虑到安全性而优先选择ssh
3、https和ssh的默认端口不同
https默认访问的是443,ssh默认访问的是22
一般情况下,443端口是会被开放的,而22端口默认是不会被开放的;
如果需要进行ssh或者https进行操作时,首先需要检查所在服务器的对应端口是否开放
4、使用https和ssh进行git操作时,操作方式不同
https通过输入用户名和密码进行远程仓库和本地的连接
ssh通过在github或者gitee配置公钥,与本地仓库的私钥进行相对应来完成远程仓库与本地仓库的连接
5、读写权限的细粒度控制不同
HTTPS:对于公开仓库,任何人无需认证即可clone(读权限);push需要完整账户凭证。
SSH:基于密钥对,权限更精细。可以为不同设备/仓库生成不同密钥,便于撤销(比如设备丢失时直接删公钥)。HTTPS的PAT/Token撤销后影响整个账户。
更多推荐


所有评论(0)