SSH 简述
SSH 是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用 SSH 协议登录到另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
SSH 为Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。
几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平台,都可运行SSH。
配置SSH KEY
SSH KEY的配置不是必须的,不配置的话我们就只能使用HTTPS协议,这样每次提交时要输入用户名密码,略麻烦,所以还是配置一下。配置SSH KEY的原理很简单,采用非对称加密方式生成公钥和私钥,公钥告诉GitHub,私钥留在自己电脑上(私钥不可泄露),当我们向GitHub上提交数据时,GitHub会用我们留给它的公钥加密一段消息返回给我们的电脑,如果我们能够用私钥解密成功,说明是合法的用户,这样就避免我们输入用户名密码了。大致的原理就是这样,现在很多免登录的系统都采用了这种方式,比如Hadoop免登录配置也是这样。
本机存在ssh key
在安装Git前提下,打开Git Bash Here
输入 cd ~/.ssh 进入到.ssh 文件夹
输入 ls 查看.ssh 文件夹里面的文件,有 【id_rsa】【 id_rsa.pub】 known_hosts ,ssh秘钥就在 id_rsa.pub文件里
id_rsa是私钥,不能泄露出去
id_rsa.pub是公钥,可以放心地告诉任何人
输入cat id_rsa.pub,直接复制ssh公钥即可
若需要找秘钥文件路径的话,输入pwd,就可以看到路径了
本机不存在ssh key
Windows下打开Git Bash,创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
将公钥告诉GitHub
登录GitHub,点击右上角的向下的箭头,选择Settings,在新打开的页面中左边侧栏选择SSH and GPG keys,如下:
完了之后点击最下面的Add SSH key按钮即可,如此之后,我们的SSH KEY就配置成功了。
创建远程仓库
接下来我们在GitHub上创建一个仓库,登录成功之后,直接点击右上角绿色的New repository按钮,如下:
其实这里我们只需要填一个版本仓库的名字,我填了test,填好之后,点击Create repository就OK了。
关联远程仓库
创建成功之后,我们会看到仓库的地址,如下:git@github.com:lenve/test.git,然后我需要将我们之前的本地仓库和这个远程仓库进行关联,使用git remote add命令,如下:
$ git remote add origin git@github.com:lenve/test.git
1.在这条命令中,git会自动将远程仓库的名字设置为origin,方便我们的后续操作。
推送到远程仓库
推送到master分支
假设我想将本地master分支上的内容推送到远程master分支上,方式如下:
$ git push -u origin master
1.-u参数可以在推送的同时,将origin 仓库的master 分支设置为本地仓库当前分支的upstream(上游)。添加了这个参数,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin 的master 分支获取内容,省去了另外添加参数的麻烦。这个参数也只用在第一次push时加上,以后直接运行git push命令即可。
推送到其他分支
如果想推送到其他分支,还是这条命令,修改一下分支的名字即可,比如我也想把我的fa分支推送到远程仓库中,执行如下命令:
$ git checkout fa
$ git push -u origin fa
1.2.
先切换到fa分支,然后执行git push命令,参数含义和之前的一样,这里我们创建的远程仓库的分支名也为fa(当然我们可以取任何名字,但是为了不混淆,最好取一致的名字)。这两条命令执行成功之后,此时在网页中我们就可以看到已经有多个分支了,如下:
从远程仓库获取
首次获取
刚刚是我们向远程仓库提交数据,有提交当然就有获取,我们可以通过git clone命令克隆一个远程仓库到本地,方式也简单,在本地创建一个空文件夹,执行如下命令:
$ git clone git@github.com:lenve/test.git
1.表示克隆文件到本地仓库。此时克隆的远程仓库的master分支到本地仓库,我们可以通过git branch -a来查看本地仓库和远程仓库的信息,-a参数可以同时显示本地仓库和远程仓库的信息,如下:
我们看到远程仓库中已经有了fa分支了,如果我们想把fa分支也克隆下来,执行如下命令:
$ git checkout -b fa origin/fa
1.表示根据远程仓库的fa分支创建一个本地仓库的fa分支,创建完成之后进行切换,也可以通过如下命令只创建不切换:
$ git branch fa origin/fa
1.此时我在fa分支下修改git01.txt文件并提交,如下:
注意由于fa分支就是从远程仓库克隆下来的,所以这里可以不添加-u参数。
从远程仓库更新
此时我们回到第一次最早的那个test本地仓库中,那个test仓库的fa分支现在和远程仓库不一致了,我们可以通过git pull命令来更新,如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律