实现github的SSH免密登录

实现github的SSH免密登录

    • SSH的相关配置
    • 在局域网内连接到SSH服务器
    • 实现SSH的免密登录
    • 把公钥交给github
    • 大功告成

SSH的相关配置

Secure Shell (SSH) 是一个网络协议,它主要被用来加密客户端和服务端之间的连接。我个人粗鄙地理解为我可以暂时使用我手上的客户端B来访问远程的服务器A。
这里以Ubuntu20.04为例,默认情况下,SSH服务在你装系统的时候是不会给你顺便装上的,但是你可以很轻易地启用:打开终端,安装openssh-server软件包

sudo apt update
sudo apt install openssh-server

安装完成之后,你可以通过sudo systemctl status ssh指令来查看当前SSH服务是否启用,可以按q返回命令行。
有一点要注意的是,Ubuntu 自带一个配置防火墙配置工具,称为 UFW。你可以通过sudo ufw allow ssh,免得到时候防火墙碍着你的后续操作。

在局域网内连接到SSH服务器

这一小节的操作并不是连接到github,不想看的可以跳过。
刚好手上有两台电脑都装了ubuntu,我就打算做个小实验。先把两台电脑A和B连接到同一网络下,为了方便,我决定用我的手机热点。。。确保A和B都配置好了SSH和防火墙,我拿A当做服务器,B当做客户端,看看能不能用B来操控A。
首先,由于是我装的都是ubuntu20.04版本,没有net-tools,可以先装一个来看看A的IP地址等网络信息。直接sudo apt-get install net-tools,这样就可以用sudo ifconfig来查看IP地址。当然,你不想装,也可以用ip a来查看。这一步之后,我们的A就可以暂时放在一边了。
然后在B的终端输入ssh user_name@ip,这里的user_name是服务器端,也就是在A上你打算使用的用户,ip自然就是你刚看到的A的ip地址。
之后就会提示让你输入密码,输入A上你打算使用的用户的密码,你就已经和A连接上了,这个时候你可以在终端界面浏览一下文件试试,你会发现里面都是A的文件了,而且输入指令的时候会有点小卡(虽然可能是我的热点问题)。

实现SSH的免密登录

具体原理为了节省时间我就不写了。总之我们需要创建一个密钥对,一个我们称作公钥,一个称作私钥。公钥是用来放在远程的服务器端,私钥则放在我们自己手中的客户端。二者是不对称加密,需要公钥与私钥匹配才能连接上。
你可以先用ls -l ~/.ssh/来查看这个文件夹下有没有密钥对。一般是id_rsa(私钥)和id_rsa.pub(公钥),如果没有类似这俩玩意的文件(可能名字会有所不同,但文件类型是一致的),那就说明你这台电脑上还没有密钥对。有的话,你可以往下翻。
那么我们现在就要来创建密钥对了。终端输入:

ssh-keygen -t rsa -C "你的信息"					//这个信息主要是拿来辨认的,本身是啥不重要

然后一路enter就好了。
这个时候你可以再看看ls -l ~/ssh/,你就会发现属于你的公钥和私钥了。
那么现在,打开你的公钥文件

gedit ~/.ssh/id_rsa.pub							//你不一定要用gedit打开,别的编辑器也可以

你会看见ssh-rsa开头的一串很长很长的类似乱码的东东,这就是你的公钥了,把它复制下来。这是要给github的。

把公钥交给github

登录你的github账号,要是没有你可以先注册一个,然后在右上角你的头像旁边,找到setting,在头像右侧的小三角形的下拉菜单里。在左侧找到SSH and PGP Key选项卡,把你复制的公钥粘贴进去,title随便写写好了,这个也是用于辨认的信息。

大功告成

现在你就可以在你的电脑上对你的git仓库进行免密操作了。当然具体怎么拉取,推送就看你对git的掌握程度了。
这里我参考了这篇博客,他写的比我的详细些。要是哪里有不对的地方,欢迎大家指正。

你可能感兴趣的:(github,ssh)