00:00
好,那我们继续来看SSH服务,呃,刚才我们也提到SSH服务它有客户端工具,有服务器端,也是分成了传统的CS结构,有专门的客户端,有专门的服务器,那我们先来把客户端的工具用法来给大家做一下介绍,那客户端呢,它有一个这样的专门的配置文件,就这个,这是它的客户端配置文件,这个客户端配置文件影响了SSH的这些客户端命令。那比较重要的就是这个这项这项很重要。
01:01
这一项的作用是什么呢?这一项的作用就是第一次登录是否去提示你输入yes no校验要密钥默认呢,它是会问你的啊,这个是默认值,我们把这个文件打开看一下啊,大家看这这个文件里面的内容不是特别多。51行,而绝大部分都是注释,那这些注释呢,你可以认为是默认值啊,比方说刚才我们提到的这个就这一项,这一项默认值就是ask,当然它被注释掉了也是默认值,Ask呢表示的是第一次连接对方需要输入用户名和啊输入yes弄啊我第一次连,当然如果不是第一次,他就不问你了啊啊,那这个就是相当于第一次连。
02:07
那如果我第四连都不想让我输,不想输yes诺直接把对方的公钥下载下来的话,那么你可以把这一项把它变成弄,把它取消注释。这样的话呢,当你第一次连接对方就不需要再输什么yes了,你看着啊,我现在再输一次是不是就没有了啊,同时它实际上自动的把对方的公钥已经下载到你自己的SSH这个目录下,生成一个no host文件,自动的。那这个有啥用呢?非常有用,将来如果你想实现自动化的运维,我想坐在这个机器上批量的执行远程命令,想管理100台机器,如果这100台机器第一次都没连过,大家想是不是就得敲100遍?Yes,那现在有了这一项就不用敲了啊,无非就是编个循环,啪,就跑完就跑完了,所以这个是很有用的。
03:16
但是改文件中间来讲不方便呀,啊,我们能不能不改文件的情况下就能实现这个功能呢?啊,那这个文件我不想改,那我把这个恢复啊,那把它注射掉,再那大家看这里面就是那个公钥啊,就是那个私要文件的路径,这不有吗?啊好,那么在不改文件的情况下,咱们也能做到,方法是呢,是通过客户端命令,比方说我们刚才是连SH这个命令,这个命令我现在把刚才那个钥匙下载下来的,删了它。那现在我们再次联系对方的话,又需要敲yes no了,那验证一下,你看好。
04:00
那么我们用命令SSH命令也能够加一个选项来解决这个问题,那就什么呢?就这个。有一个叫杠O,后面跟上刚才说的这个no s sh命令,在远程连接的时候,在你不修改配置文件的情况下,如果要想实现这个一样的功能,那就加杠O就好,也可以了。后面跟上刚才说的这个strict no key,然后taking等于no,那这样就行了,比方说我们再连,你看是不是就没有了,然后它自动就给你把闹号的文件生成了,所以这个省事在于我们不用改文件了。那加上选项就行。那这个SHSH命令的用法啊,我们来给大家说一下SSH命令呢?呃,它的格式这样,用户名加主机中间加个at,如果你不跟用户名不加at的话,默认他就认为是你当前登录到当前这个机器上的用户来连接,就当前你是谁,你连接对方就是谁。
05:13
当前是root,那我连接七的话就是以root身份去连啊。这一点呢,相信大家刚才在Windows里曾经看到过这种现象,你看Windows里面我现在当前身份是谁啊,是呃,Meter,那么当我去连接对方,我如果不敲用户名,是不是他就认为我是以这个吧机器上的密去连呀,那吧,机上有密吗?那没有啊,那就连不上去啊,你得敲也敲不上去,所以你这要写用户名,知道吧,你要写用户名。啊,这样才是完整的写法,这样才能连啊。啊,这是这个SH连接,那除了这个格式以外,它还能执行远程命令,我连上去还可以执行命令,那执行命令比方说我就想执行一下,呃,看对方的这个文件啊,你看我能不能连过去执行命令看可以。
06:15
那这样的话带来的好处是不是就相当于我就不需要登录上去执行命令再退回来了,这不一条就做了吗?诶,那么大家马上就想到了,那将来我们用这种方式是不是就可以类似的实现一些批量管理,比方说我要管理100台机器,是不是我就把100台机的IP做一个循环,然后呢,执行这个命令,想执行啥是不是就批量管了,对吧?那那问题是还有一个问题没有解决,就是密码你得输呀,那你要编个循环,一个机器得输密码,你连100台机得输100遍密码,对吧,那这个问题怎么解决呀。咱们讲完脚本了呀,同学们,这个问题我不说过怎么解决吗?我们讲过expect呀,Expect是不是可以帮我们监控这个密码,然后把密码直接给他提交,用1PAD来自动提交,我们就不用输密码了吗?那这不变个循环配合D不就完了,那这个问题我们讲过的呀,对吧?啊,所以这个问题不是问题啊。
07:26
还有就是这指定端口,因为有些服务器啊,放在公网上是很容易被黑客攻击的,你像我那网站啊,我那网站啊,一个小博客放在互互联互联网上啊,很有可能被黑客去尝试破解入的口令,所以呢,我就把端口号,它的服务器端口改了,我们都知道默认服务器的端口呢,是22,那如果你基于安全考虑把端口改了,改的话呢,就改它的服务器的配置文件,就这个,在这呢有一个叫port,把这个地方改一下就行了,比方说改成四个二,改了以后让它生效。
08:14
好,我们来看一下它的监听端口是不是变了四个二了吧,那这时候呢,别的机器要连,你就必须要指定端口号了,你不指定端口号,它默认是连的是那个22,你看连不上去了,所以要指定杠P来指定服务器的端口,这样才能连接。啊,所以这个就是连接的话要指定多少号了啊啊所以呢,大家记得我曾经连我那个服务器,我是不是就指定的是9527对吧,对吧,哎,我那个网站叫这个。每次我都得想想我的密码这样不对,哎,上去了啊,你看我这个端口号我就改了。
09:14
改成了9527 9527,把这个改完口令以后,改完端口号以后呢,这个是一个比较好的安全手段啊,咱们上次曾经有一个考题,就是监控你的系统失败的登录信息,有一个叫last b的命令,你看我这里面有一个失败登录的信息,这个失败登录可能就是我自己的IP,因为我刚才敲错密码了吗?啊大家看你看是不是现在39就是我的就这个,你看这里面只有一条记录,那说明我这个机器看来是没有人猜测过密码是吧,你看就一个还是我自己操敲错的。
10:02
所以你们不要买了服务器的话,别忘了改多少号啊,不改多少号,我们上次给他说过那几万个请求就来了啊,都破解那猜你的口令啊,说不定万一猜对了呢,要怎么又来了,看来有人猜我密码了啊,你看又来了两个啊,这这这这么新来的吗?这肯定是别的同学猜的啊啊,别的同学猜的,那我到时候改一下端口号吧。好,这是呃,端口的设置杠P可以指定啊,这个杠B呢,是指定连接的那个IP,因为我机上有可能有多个IP,那我连接对方会默认的找一个端IP来连,但是我如果想指定某一个IP连,你可以指定杠B。杠V呢是查看执行过程,它会显示非常详细的SSH的登录情况啊,非常详细。
11:05
那比方说我们现在连一下这个生产这八啊,这个端口我把它恢复啊,要不每次还得敲这个端口。音量。好把它恢复一下,好端口又恢复了,恢复成默认的22了啊,那么现在我去连接对方的时候啊,这个登录详细的过程,它并不默认显示,所以我们这加杠V,你会发现它这显示一大堆信息。啊,中间这就是SSH连接过程中到底发生了哪些事件,那这第bug就是调调试调试,所以将来万一你连接有问题,你可以通过这个杠V来看看它中间发生了什么,C是压缩X呢是。
12:04
实现X11的转发,这个X1的转发呢,涉及到一个图形界面的显示问题啊,就是这样的,我们在有些时候啊,希望能够在对方的机器上运行图形工具啊,当然我这因为没有安装图形,呃,这个60是可以的,因为我这个七和八都没有安装图形,没有安装图形演示不了,那我就开一个新的机器,这个机器它是有图,好,我在这上面来给大家演示一下这个图形。首先呢,我把图形先开启起来。这个这个这个同学有四五万的。
13:03
被破解密码的记录了是吧,四万九啊,不算多,你才四万多啊,没达到40万,400万不算多。是黄同学是吧。黄同学啊。哎,我记得以前有一个什么黄老师还是什么的,好,我开启一下图形啊,把图形开启。好,这是把图形开开,把图形开开以后呢,我们想干什么事呢?是这样的。我在我的机器上去连接另一台机器,连接另一台机器连上去了,连上去以后,注意我现在这个机器已经连到一个新的机器上去了,16啊。
14:03
那我想运行它上面的图形工具。再看运行不了。呃,那么在16上有这个,有这个这个这个。有这个工具吗?应该是有的啊,这个工具应该属于标配。就是这这个这个通讯界面装好以后呢,它就都有这个工具,你看都有这个工具,那为什么我连上去既然运行不了呢,就是因为它背后。这个X11协议的问题,它默认不让执行,我们需要加上一个X。这样才能运行远程主机的图形界面,大家看打开了看到没?这个图形工具呢,是在对方的机上的程序,但是在我这显示这里面就涉及到一个S11协议的工作逻辑,那我们来给大家说一下S11的这个协议的工作逻辑。
15:11
八。嗯。那现在是这样,我们这儿有两个主机。这个主机假设叫福气。这边是客户端。当我们的客户端去通过SSH协议连接到这个服务器以后,我们都知道在这个机器上。操作的时候一键联通,他看到的界面就是s server的界面了。那么我现在联通以后啊,在这个机器上,在这个机的电脑屏幕上。
16:04
实际上它显示的实际上就是sh server的界面了。但是这个只是字符界面而已,只是字符界面。如果我想在登录之后运行一个图形工具,比方说以GP的为例。这个JD的程序你连上去以后,我们都知道这个你连接虽然是连上去了运行,虽然在你的电脑上能看到这个程序的运行,敲命令也是在你这敲的,但是这个程序本身这edit是在哪运行的呀?是不是人家在服务器上运行的,这个程序在这运行的,只不过你是远程管理人家而已,但是这个程序呢,它是个图形化工具,这个图形化工具呢,它要显示你是不是希望他在你当前电脑上显示,而不是在他的电脑上显示。他这不是有个屏幕吗?对吧?呃,这个机器上它不是有个屏幕吗?那这个屏幕呢,你希望显示的这个dad是在你这显示,不是在他那显示。
17:08
那这时候呢,你就要通过F11协议来实现,F11是图形化的一个协议,F11是图形化的协议,通信化协议,它可以支持跨网络通讯,我们可以让F11协议基于网络通讯,走网络,我们可以把I1协议通过网络把这个电脑上运行的图形界面通过I协议发送到这个客户端上,在客户端上来显示图形界面。那这里面需要注意的就是F11,它实际上也是基于客户端服务器端的。它也是基于服务器端、客户端的,那么问题是现在来了,谁是服务器端,谁是客户端呢?啊,那现在大家想这个工具啊,JD的这个工具是个图形化工具。
18:04
这个工具它显示图形界面,我是不是希望是在这个电电脑上显示。是吧,在这个机上来显示这个图形化工具,那画图在哪画是在这张画,但这个程序运行却是在哪个机上运行,是在服务器上运行,所以是不是就分离了,现在这个和我们Windows不一样,Windows你在哪运行就是在哪显示。现在是显示是在我这显示,但是这个程序运行是在远程运行,所以就要跨网络通讯,就要走S11协议跨网络。但是在我这显示是不是必然涉及到图形显卡,就是我们要通过图形显卡来显示,在屏幕上,你不是要显示,你要图形显卡,所以在这边实际上就是F11的服务器,这是I11的服务器,这是幺幺的服务器,那当然这边这个J的实际上它就是一个I11的客户端,它是个客户端。
19:05
那这个将来怎么判断谁是服务器,谁是客户端呢?判断方法很简单,谁画图就是谁在谁的屏幕上显示,谁就是F11服务器。程序运行在哪没关系,因为我这程序明明在这儿运行,但是由于在我这画图,我就是幺幺服务器。这里面大家别给搞混了啊,你看我这不是s server吗?S server你是s ss sa协议的服务器,但是对S协议X11来讲,我是服务器。那这两码事别混了啊,我们都知道服务器呢,只是一个角色,并不代表着你,代表你是某个服务的角,一个服务器,但是并不代表你是所有服务的服务器。啊,对于sa,对于SSH服务来讲,你是服务器,但是对F1来讲,人家就是服务器。是不是?那要想实现就得加上那个杠。
20:01
X选项才能做到,否则的话它不会显示在这个位置,那事实上Windows上我们也想实现这个功能,什么意思呢?就是我想在我的电脑上,大家都知道我现在是通过叉12连上去的,对吧,叉线连上去的,那插线连上去,哎,我也给他装个firefox,我们都知道firefox是同一界面的浏览器是吧,我装上一个。那装完这个腾讯浏览器以后,我们是不是有的时候希望在叉12里面连到目标服务器上去运行浏览器,但是六零浏览器是在哪显示,在我本机显示。是在我的window上来显示,那也就是说firefox浏览器是在另一个运行,但是在我的window上显示,大家想想谁是服务器啊?谁是夫妻啊?对于X11协议来讲,Windows就是服务器,因为你是画图的,嗯,或在哪画图在哪显示谁就是S11服务器,但是Windows它有S11这种协议协议的服务器软件吗?默认当然没有,那没有能给装一个吗?啊,比方说咱们叉share里面它有一个套件X manager那里面就带啊这个东西它可以做到,当然如果你不启动的话是不行的啊,那你看我现在firefox直接打开打不开啊,它这显示说没有display环境变量去指定什么意思啊,就是说你这显示firefox的时候,他不知道在哪显示啊,那那我们得改一下,告诉他在哪显示,在哪呢?Port大家都知道,我现在是拿Windows连的,我的Windows IP是10.2.1。
21:54
这是我的Windows IP,我现在希望图形界面显示不是在你的力量显示,是在我这显示,所以我这需要定一个变量叫XK,把它指向一的0.0端口窗口把它指一下,指完以后呢,我们再去运行一下fire boxx,大家看到它现在没有办法打开,是因为我机上没有X11协议的服务器,所以我们只需要把I11的服务器打开就可以了,怎么打开呢?我们在安装插线的时候呢,实际上它提供了一个套件。
22:27
黄色乳。啊,这个在这1PASS,把这个打开就行了,这一打开就相当于你在电脑上运行了一个H11的服务器就开了,开了以后这时候你再看。哎,是不是没开啊,有啊啊,这是1.0,看到没有,他写了个11.0,那我就把这个地方改一下1.0,哎出来了,扁鹊是。
23:09
你看看浏览器是不是在我的温度上将展开。当然,那你应该知道这个软件是在Linux运行,但却在Windows上来显示,听懂了吗?那么用这种方式是不是我们就可以轻松的来运行Linux的图形工具了,而不需要每次都跑到linu电脑跟前来运行,我们远程就可以运行在我这看呀,你想哎,就现在我这个在我的Windows上可以用Linux的通信工具上上网了,百度看。是吧?啊,注意这个乱码啊,这因为什么我没装中文字体啊,啊,没装中文字体吗?啊,这个中文字体的话,它应该有一个package包,我记得是个package包。
24:07
这叫语言包还是什么东西了?我忘了叫啥了。就叫这个叫啊,这有个语言包。太多了。这个C。那CN,所以CN可以CN。这这个啊,把它装一下。看能不能行,把这个语言解决一下。
25:05
好,关了它。啊又又给丢了,哎,我刚才是在这个窗口敲的啊,在这敲敲。那给我看看。服务员。还是乱的,那是个缺字体还是还是缺字体。缺字体。不行,一个缺字体。
26:04
这应该不是编码的问题,应该不是编码的问题。社区为。啊,我这个地方显示中文应该是可以的,因为我们这显示中文,我打个中文能显示中文,是不是中文不支持啊,支持中文,比如它字体的问题,好了,这是刚才给大家说的这个。哎,用这种方式还是非常。很好的解决了我们远程运行图形工具的问题。啊,用这种方法。
27:00
这个实现这个数字呢,和刚才这个地方显示有关啊,大家看鼠标点在这,它写的是冒号一。点零,所以这就得写1.0啊,因为我这开了两个啊,所以他这个打开的话呢,它监控了哪个,你就选哪个这个地方啊,这是。用图形化。这个我们以后用的比较多,因为有的时候啊,在Linux里面没有图形环境,但是我又希望运行Linux里的图形工具。那我们就可以用这个。甚至我们甚至还可以把图形化的整个桌面抓到Linux里啊,大家看我这个六机器是图形化界面,六级图形计化界面,我可以把这个图形界面整个抓到,另抓到Windows里来显示。那这个那这个怎么实现呢?也非常简单。
28:00
啊,就这么做就行了,那我们来看还是把叉12打开,叉12自带了一个S11。在这个地方有一个X start,起个名字随便,然后呢,在这给他写上一个主机的。六。用户名。然后在这选择最下面这个。Display好,运行一下好输入它的密码,大家看会出现什么现象。你们看一下这个就是Linux的图形界面,已经在我的温度上显示了,看到没,这比较大啊。看双击打开看见没?这不就另的桌面吗?是不是很好玩啊,我把整个另一个桌面抓到我的Windows上了,这不就跟Windows的远程桌面一样吗,是不是?
29:09
这个将来有时候有用啊,比方说万一你将来工作中需要运行图形工具,但是你又不在这个电脑跟前啊,那你就可以通过插远程连过去,直接把它同界面在你的window上显示了啊,以前有同学在生产中安装Oracle数据库,Oracle数据库呢,它的安装很多人都会喜欢,会用同一界面安装向导,下一步下边安装,那以前人呢,不会。不会安装,那就跑到机器跟前装,实际上用不着,我们现在有了这个通讯工具,那那图桌面都过来了,那向导不是也在我这儿可以清楚的看到,然后可以点下一步,下一步装就行了。啊,不用非得他在机器跟前操作。就这样就可以了。啊,那这个呢,我退出啊。
30:00
退出。好,断开,这样行了。啊,这是刚才给大家讲的这个XT呢,这个是伪终端TT分配,这是干嘛的呢?是这样的啊,就有些时候啊,有些企业呢,它的这个安全性要求非常高,可能会出现这种现象。啊,就是有的时候啊,他不允许你直接通过网络进行连接,你必须通过间接的手段进行连接,什么意思呢?是这样的啊,有些企业里面,它的这个服务器在非常深入的地方,你从外部互联网连接,它不能直接连。呃,比方说有些企业里面啊,尤其国家机关这种它设的非常安全啊,我这画了好几个啊,这什么意思啊,就是说这个机器你是你最终想连的机器,这个是你现在目前所在的机器,现在你想连这台机器,但是你直接连,他不让连。
31:12
直接连接不让连啊,你直接想连他不让连,它中间有一些安全测试,比方说防火墙之类的,这个机要连的话,你得通过它才能连,但是你直接连它也不行。没关系,那你可以呃,想办法连到他那来,因为这个机器是可以连它的,但这个机器也不让连啊,你要连你先连到他那哎,所以我们连的话呢,是这么连,就先跳到这台机上,跳过,通过它再跳到这台机上,这么一层层跳,最终跳到我要连的机器上。啊,以前有同学工作的时候遇到过跳几次呢?跳七次,跳七次最终才连到他那机器上去,不让你直接连,安全吗?当然那如果是这么跳的话,中间我们的这个这个每次SSH是比较慢的,麻烦的啊,你看现在我这有三四台机器,这个这这四台机器,这四台机器我们要想连接,那我们可以这么来连。
32:21
就是。好,我再开一个啊。那我们的目标是要连到这个18上去,就这个我现在正开的一个机器,我现在是在六上,我想坐在六的机器上,最终连到18那个机上去。现在由于这个18的机器设了安全策略,它不允许六直接连,那所以我就通过间接的手段,我先用六连到七,七连到八八,再连到18,这么跳着连啊跳着连,那这个怎么实现呢?那以前的话呢,我们就这么连,先连到七,连到七上去了是不是,然后再去连八啊,然后再去连最终的那个18,就这么一步一步连上去。
33:23
啊,你想工作中如果每天要为了连这个东西,天天敲这个,你是不是就好烦了啊,所以我们这有一个比较好的方法,注意这个18现在是不允许用直接连的,那我们为了模拟这个场景,我故意加一个策略,加一个策略,这个策略呢就是禁止。禁止六的直接连接,现在六是直接连不上去的啊,但是六连不上去,七也连不上去,只有八才能连。啊,我都加了,加了以后呢,你看我现在好,现在六呢,直接去连18是连不上去的,你看没有连不上去。
34:11
刚才我们说了一步步跳是可以的,但是这个跳呢太慢,所以我们可以这么连,这加个T跳到七上,再通过它再去连到八上。啊,那跳到八再去连最终的18,这加个T,加上T以后呢,第一步你先输七的口令,第二步再输八的口令,行了,最后再输18的口令就上去了,他也要跳,不过呢,这个比刚才要省事,因为至少感觉一条命令就搞定了,是不是就上去了啊啊,这就是T的用法啊,不带T是不行的啊好。
35:06
呃,刚才我们用过了这个O的用法,这个也可以指定那个,这个用的非常多啊,I呢是指定那个私钥文件,然后这个地方可以远程执行命令,你想我们用这个命令可以直接把远程的主机通过set改了,然后我现在就想把对方主机那个基于这个第一次登录问你yes,斯诺这一项给它关了,那你就可以直接用S改就行了啊,你看这个S直接就改了,这可以。呃,面试的时候呢,呃,曾经也提过一个问题,就是如何在远程主机上运行本地脚本,这什么意思啊,就是我本地有一个脚本,我本机有一个脚本,这个脚本我希望是在远程机上运行,不是在我本机运行。
36:01
那比方说我写一个这样的一个脚本,这个脚本就是显示当前的IP地址啊,当然这个脚本如果在我本机运行,那当然显示就是我本机的地址,问题是我现在不是想在我本机显运行,是希望在比方说六个机上运行。那以前很多人都是把这个脚本拷到远程主机啊,你方法可以这么考,你先把它拷进去,拷到六上。然后考到对塔下,然后运行的时候呢,怎么运行呢,就指定这个。啊,当然这个没有加执行权限啊,我还得加执行权限啊,加上执行权限,我们先给他加上啊,这样的话就加上执行权限,加上执行权限我们要运行它,那就把这个路径一写就行了,那输入密码。
37:06
哎。写错了是吧,看可以运行吧。我这个命令不就是显示当前的IP地址吗?啊可以的,但这种方式呢,缺点就是你还把它需要把它拷过去,那能不能不报不拷贝脚本到目标主机的时候,我就直接就运行,比如说七上,七上现在没有拷这个脚本,我就想在八的上面把我本机的这个T文件啊,就是我这本机有一个T的脚本,这个脚本直接在八七上运行。那实际上也很简单,那就是。通过重定向这种写法,你看这种写法就可以运行。那我们在这写一个,但是把我本机的脚本通过这种方式传给他,你看能不能运行,是不是可以运行。
38:11
这就可以,这样的话,你省得你把脚本拷过去了,你可以不考,不考的话就能在对方的机器上运行你本机的脚本。是不是方便啊?好。这是之前说过的啊好,那接下来呢,我们来看一下SSH的登录。验证,我们目前用的验证方法最常见的就是基于用户名和密码。这种验证方法呀,比较传统。
39:00
同时也会带来一个问题,就是不方便我们远程的批量执行。SSH也好,SCP也好,它都需要交互的输密码,那我要管理100台机器,每次连接对方都得输密码,是很不方便的。所以我们这有一个其他的验证方法,叫基于K验证方法,基于K的验证方法。可以省略我们交互式的敲密码的这个过程。从而达到批量执行的效果。当然它也能实现用户账户的合法身份验证,也就不用输密码了,我也能验证。那生活中实际上我们密码用户这种方式也可以用别的方式来替代验证嘛。生活中我们有好多验证方法。比方说脸刷指纹是吧,这不都行吗啊。
40:05
那么在Linux中它还支持基于K的于密钥的身份验证方式,这种验证方式它怎么实现的呢?那我们来看一下,呃,基于传统的用户密码验证是这样的啊,你看这是客户端有三把钥匙。有自己的两把钥匙,公钥私钥,也有服务器端的公钥,服务器端这边也有自己的公钥私钥,也有客户端的公钥,这个我们刚才说过,第四连接是不是会拿到对方的公钥,对吧?拿到对方的公钥以后,那我怎么基于用户密码验证呢?为什么他这个基于用户密码验证就不会被别人截获呢?是这样的,首先你在连接对方的时候,先自己输一个口令。12345,输完口令以后,拿服务器的公钥来加密。你想服务器的功钥加密完了以后传给对方,对方是不是只能拿服务器的私钥解密,是不是得到了这个密码,得到密码以后,他就比对那个shadow文件啊,She文件,看看这个12345对不对,如果对是不是就可以登录成功了,那不对,不就登录失败了吗?对吧?所以这个很简单。
41:14
这是传统的用户密码验证。那接下来我们来说说所谓的基于K验证,它是怎么实现的呢?这是基于K验证的工作逻辑,大家看一下这个图。JK工作逻辑是这样的,首先客户端有公钥、私钥,服务器端有公钥。第一步,先把客户端的公钥给客户端的公钥发给服务器。这时候服务器就拿到了客户端的公钥。拿到了客户端的公钥,并且保存在一个叫奥的case这样的文件里面,这个文件里面可以放客户端一的公钥,也可以放客户端二,客户端三,有很多客户端的公钥都可以放进去,放进去。靠过去以后呢?接着我们在服务器端生成一个随机的字符串,假设13579。
42:06
然后用后端的公钥来加密,加密以后生成了一个密文,再把这个密文发还给。够袋。发给客户端以后,客户端是不是可以有自己的私钥啊,进而解密得到了13579。然后发过来,当然这个发呢应该是加密的啊,比方说用服务器的公钥来加密,把这个东西发过去,发过去以后两边一比,如果一样都是12313579,那说明是不是就怎么说明是不是就验证了对方的身份了。这就是基于K的密钥登录的背后逻辑,它这个地方又是用到了我们说的。公钥饲料对来实现的。啊。
43:01
好,那我们明白了这个工作逻辑以后啊,那下面我们来试试怎么去实现基于K验证,实现基于K验证啊,啊初步做一些配置,后续呢就非常方便了,因为我们刚才给大家讲的这一系列过程。只需要你做的一件事,就是这件事,这是你要做的,你需要把自己的公钥复制到服务器端,好,一旦复制完,后面的事它是系系统自动完成的,你不用管了。所以你只需要把你的电脑的公钥传给服务器以后,后面他就可以进行可验证了。密码是不用输的啊,那下面咱们来试试。这个过程当然第一步先生成公享C料,对这个共享C料对呢,咱们有一个命令可以生成叫SCH的JKG,这个命令生成的时候,你可以指定算法用哪种算法,用RC算法,DC算法,一般我们用RC比较多一些,然后呢,这个C钥生成以后,他是默认放在这个加目录里面,有一个叫点S是目录,下面一个叫IDRC,因为这用RC算法,这就是RC,如果你是这DC,这这个文件就叫DC啊。
44:15
呃,当然生成的私钥文件如果被别人窃取了是很危险的,所以你可以考虑给这个私钥加口令,不加的话那就是没有口令啊,那这就是生成饲钥的公钥要对,生成饲钥饲要对,以后呢,利用这个命令把自己的工钥拷贝到远程主机,行了,你就干的活就做完了,就这么简单。做完以后呢,下次你再连接对方密码是不用输的,它自动就可以基于这个公钥私钥来验证你的身份了,那我们来试一试。好,现在我拿七和八这两个机器来做实验。啊,为了把环境改成一个初始环境,那么把原来的那些S目录都给它删干净。
45:01
这样的话,两个机器相当于一个从来没连过的状态啊。好,那我们现在呢,传统的方式记用户名密码,所以我现在如果用正常的连接,你看是要输入用户名密码的。啊好,现在我把它改成基于可验证,刚才说了基于K验证,我们现在八是当客户端,七是当服务器端,啊,那客户端上要生成公交私料,对。好。这个生成需要,对呢,我们用这个命令K这生成。那你可以后面什么也不跟,反正它有默认生成,那默认算法就是RC,你看我没写就是RC,当然你要是不想用RC算法,你可以用DC,你看这时候是不是,你看它生成文件就叫DC,对吧?啊,我们要用RC吧,默认的回车是IC,那么它生成的这个私钥呢,是放在这个路径下的,那默认你放在这吗?放在这就直接回车就好了啊,直接回车就接收默认值,这个私钥呢,你是不是要加个口令啊,那如果是,那你就可以敲回车敲,敲一个口令就行了,如果你不想加口令,直接回车就好了,敲两遍空口令。
46:28
这时候呢,就生成了,那我们可以看一下,当前是不是生成了一个四幺公141,对啊,那其中这个就是四钥文件,这个是公钥文件,那我们来看一下啊,它是不是生成了私钥。那这个呢,就是供氧,看到没有氧消毒。然后接下来我们第二步呢,就是把私钥跑到服务器上去啊,那么考私钥呢,用不着你自己执行什么。
47:07
拷贝命令,你用这个命令就行了。把你的公钥拷过去。这个公钥呢,你要指定一下它的公钥文件在哪。实际上你要不指的话,默认他也知道在哪,默认就找的是这个文件。所以你不写也行。那写上的话,你杠I应该是杠I指定这个公钥文件是谁。写上当是如果我没有写或者写错了,比方说我明明应该考公药,结果写了个私钥,就会导致问题啊。我把公钥忘了写PA了,写了个私钥文件,哎,好像也没报错,那这是不是麻烦了,把四药拷过去了,那么来看看是不是会有考四药啊,哎,拷过去了,拷过去要放哪了呢?
48:07
哎,放在了我们说的all rise的那个文件,那我们看看这边是不是生成了这样的文件,好,大家看是不是生成了这样的文件。哎,这是公还是私药,私药明明是啊,公钥你看看它这个大小是这个不一样啊,这个公钥你看就这么点,私钥很大的,私钥很大的,对不对啊,所以所以呢,你你你看见没有,人家是不是好聪明啊,你写的是资料,人家考的是公钥啊,默认的啊。哎,那那那这个好,完了以后呢,能不能把这个GK验证实现了,那我们试试就知道了,现在我再连对方,它自动就会利用V141多来做验证,看看是不是能成功回车上去了,因为背后的验证不用我们做了,自动完成。
49:03
这就实现了,那背后为什么能实现呢?你翻过头来看我刚才讲的那个原理,它怎么实现的?那我们刚才说了,手工的先把公钥拷给对方,是不是对方放到这个奥斯rise的这个文件里去了,然后呢,接着它生成一个随机口令,13579。然后你这不是要发链接请求吗?你发链接请求的时候,这边生成13579以后,他会拿你事先得到的公钥来把这个13599加密,加密完了以后发给对方,对方是不是用自己的私钥解密,解密以后把12313595再发过来,两边一对比,说明是不是我这个公钥和你的私钥正好是成对的。那这不就验证你的身份了吗?对不对,那所以那既然这样,那我是不是还就不用再输什么用户密码了,那这不就省事了吗?当然了当然了,我们不仅实现了,哎远程登录,那实际上我们现在是不是可以远程执行任何命令了,那比方说我们想执行一下当前这个机器的班本号看看,要不就直接看了密码都不用输,那那你想在对方的街上干点啥事,那不就很轻松吗?对不,山个根什么之类的都行啊,这都可以的,对不对啊,当然我们拷文件也可以了,以前拷文件大家记得我是不是要输密码了,现在呢,你看我拷文件,比方说我就把我这个文件拷到对方的电脑上的贝塔下,把我拷到八的这个机上的贝塔下,哎,拷到七上,因为我和七是实现了那个几K验证。
50:43
你看直接拷过去啊,拷过去我怎么知道是不是真的拷过去了,那我们那你验证一下不就知道了,七看一下啊,对塔下的那是不是认可过去了,没问题。
51:04
所以有了基于K验证以后,以后我们做一些事是不是就方便了,密码都不用输了。对吧。当然了,这个GP验证呢,千万要注意,一定要保护好你的私钥啊,因为你的私钥一旦被泄露了,那你觉得会出现什么事,比方说有人把你的私钥偷走了,比方说我拿六来偷他的饲钥,咱们再偷一次啊,这里面大家看是空的啊,没有那个私钥,我现在假设有人偷走了。咱们的私钥偷到六上去了,在偷到六之前啊,六去访问七的时候,还是要提供用户密密码验证的,对吧?好,那我把资料偷走。看看啊,偷到这个点S这文件夹里,这是偷走了,好点SH大家看这里边它是有一定的权限的啊,这个私钥呢,是600的权限,所以我偷过来以后呢,也要按照这个权限来设啊,不过已经默认设好了,那就不用改了,好那现在我们偷掉了,偷偷走了私钥以后,你看我再连一下七大家看。
52:30
要输什么?我刚才不是没加口令吗?LADIZ。我看这个权限是不是有问题啊。偷过来了吗?谢谢。我把公钥拷给对方,那这是私要。
53:01
600的权限也没错,那就是上级目录有问题吗?上级目录是700的权限。也是700啊。让我输这个私钥的口令,我私钥是没设口令的。要不就是加密算法不兼容。我看一下IC。这有可能啊,因为他这个用的协议版本不一定是一样的。啊,有可能比方说这样吧,我拿一个同一个版本的来啊,我这有18的机器。版本不一样。
54:02
好,我在18的机上,我去访问一下目前的七啊,你看它是要经过用面没验证的,那我来偷一下它的私钥。啊,我偷一下的私教啊,这回考到18上。把它私钥偷走,当然这个目录呢,现在是不存在的,因为我这根本就没有隐藏的,呃,有没有这个文件夹,诶好有,那我就直接拷过去就行了啊拷过去了,拷过去以后呢,我们来看一下这个目录有了,然后呢,刚才我们去连七是连不上,需要输入用户密码的,诶你看现在可以了。这这应该是版本的之间的差别,大概现在是不是我密码都不用输,就这样,这是不是就告诉大家一个问题,就是私钥保护好了,你看你私钥不保护好,别人一偷走,那你你你这个继可验证好了,那我也可以继续可验证,密码都不用输了。
55:02
啊。所以为了保护私钥,那怎么办呢?那就设口令呗,我们刚才不是没加口令嘛,所以这个私钥容易被别人套盗走,那么怎么去对C要加口令呢?啊P进这加个小P,小P呢就是对C要加口令,假如说我们这个文件就是它设个口令,设口令一旦设完以后呢,你看一下这个C钥,它就有口令了。这个当然看不出来啊,这个私钥文件呢,被加密了,大家看一下时间。啊,那这时候呢,如果别人再偷走你的私钥也没有用了,比方说我再偷到18上啊,再偷到18。好,再拖到18上,那你看这个18拿这个偷过来的私钥,再想冒充人家去登录七,你看他行不行,是不是得输口令了。
56:04
那你这要不知道,不知道口令你连不上去,你必须要知道口令,这样的话你光偷走私钥没有用。对吧,但是呢,你要知道你不能登了,他本人是不是也得输密码了啊,你自己也得输这个密码啊,啊,你看我自己也得联系的,也得输密码,那有人说那这这这不又回到原来的地方了吗?哎,别忘了,这个密码可不是你远程主机的密码,是你的私钥密码,比方说现在你要连十台机器,你输的密码永远是你自己私钥的密码,而不是远程机器的密码。那远程机器可能十台的密码不一样,以前的话输的是远程机器十台机器不同的密码,现在你输的是一个密码,输的是自己私钥的密码,明白了吗?所以这还不一样,当然就说了这个私钥密码让我又交互式了,那就又实现不了那个自动化了,那这个怎么办啊,没关系,我们可以开启一个代理。
57:01
用代理程序帮你把这个密码记住,你就不用输了啊,那么我们可以开启一个代理省的在敲密码,那这个代理程序呢,我们这有一个叫s agent的Bach啊,这个命令叫s agent bash,然后呢bash,然后呢,再通过and把代理把密码托管给代理把密码托管他把密码输进去好了,这时候你再连接对方不用输密码,那我们来试试是不是真的这样呢。上去了。什么当然了,这个你退出去,咱们他这个代理相当又停了啊,所以你下次再连他又得输密码了啊,不过呢,你只要登录以后,把这个代理启动一次以后就可以反复用了啊。那这就是基于K的实现方案,看到没有,那这个基于K验证实现了以后,将来带来好处就是我们将来远程管理就非常方便了,因为密码不用输,直接就可以在远程主机上执行命令。
58:12
这个我们将来在,尤其后面学习一些服务的时候,我们经常会在很多机上去做配置,那你每次要这么这个输密码是很烦的,那就基于去验证就可以了。当然这个地方有一个问题啊,这个基于K验证,那么我们现在是实现了单项基于可验证,也就是说八到七的基于可验证,那么七到八之间是不是还是用传统的密码验证啊,啊,现在你看我这个七到八之间还是要密码的。啊,还是要密码有没有,那所以如果想实现双向基于可验证,那咋办啊,再来一遍啊,在器上再做一遍,那问题是将来我们的企业里面可能不仅是两台机器,如果是三台机器,四台机器,我们彼此之间都要实现双向验证怎么办啊?
59:09
那你该怎么办啊,那这个这个过程是不是就有点麻烦了,比方说我们就不多啊,我们就四四台机器。四代机器。这个四台机器,按照刚才的做法,我们要实现GP验证,那你想想我得做多少次?呃,因为每次是单向的吗?这什么意思是吧,还得再来一次吧。再来一次。
60:01
这是一次,这是两次了,又得来一次,这是不是刚做完才实现了单向验证,这一个机器到三台的,那别的机器到他这还没呢,那接着我们是不是这台机器又得再做一遍,你这数学上你们有这个公式吧,啊,数学上要算的话,这这多少次啊这。啊,这是多少次,这个高中数学吧,这是是不是高中数学我不画下去了,你应该知道的。是吧,是不是12次,12次你不觉得麻烦吗?那咋那咋办啊,那咱们少一点啊,我们就三台机器,现在三台机器,我这个是6783台机器,想实现基于可验证。
61:08
那三排之间想事像机可验证,我们想简单一点,那怎么办呢?有没有更简单的方法呀?我把它删了啊。那怎么办呢?非常简单,也没想象那么复杂,那我们可以不可以把所有的主机共用一套私钥、密钥、公钥不就完了吗?那啥意思啊,那我们就生成一个K镇生成了,生成完以后呢,在这是不是公钥四要多有了,然后呢,我自己连自己不就得了吗?Copy ID连自己把公钥拷到自己的电脑上,大家看这里面呢,是不是就有了那个一个奥文件,而这个文件里面写的是不是就是自己的公钥啊?
62:04
那我想接下来你应该知道要怎么办了,是不是把这个目录拷到,当然我们要保留权限,所以我们要用这个,这个可以保留属属性,好,我们把自己的这个目录下的所有文件复制到你要将来和远程主机通讯的J可验证的主机上啊,这是一个机器啊,再复制到六上,当然这个和版本有关啊,也许这个六刚才我们试了六版本,好像有有点不兼容啊,那现在我们来试试吧,看看行不行啊,啊,看看和七连接行不行,看验证成功了。啊,那么我们再连一下六呢,六也行,那这六连七呢,哎,看来还有问题,那这个六六和七之间,这个六版本比较老,那不行,那这种方法对于高版本应该行,就78778之间是可以的,就是六版本它的加密算法不太一样了,所以这个不行。
63:14
那当然,比方说我们现在用刚才那个方法,我们,呃,我们去搞到18上去吧,我这边有个18的机器啊,18的机器,因为我。是吧?啊,那我现在就可以把刚才那个K呢考到18的级上。啊,这考的是八,考到哪,那我就和谁实现的实验证,那现在你看我连到七上,这样密码不用输,然后连到18上看可以吧,是不是密码不用输,是不是就实现了身份验证UK的验证啊。啊,当然我任意连,我再连回来,我连到自己的八字机上去,但是yes还是要敲的啊,因为第一次连嘛,你看明了吧了。
64:11
明白意思了吧,这样的话呢,咱们快速的就实现了三个主机的互相之间的基于K验证啊,当然这个六版本有点不兼容啊。这个将来我们会用到的啊,希望你们记住,因为将来我们确实会有一些环境是要求多台机器直接实续进去验证的。那么这个基于K验证还有一个问题我们需要解决,就是。如果是图形化,我们怎么去基于可验证,就是我们插share怎么去实现基可验证?刚才我们远程连接都是SSH,那属于Linux里的SSH命令,那如果我想远程连接,我拿Windows的插远程连接别的主机linus能不能实现GK验证呢?我们现在都知道,我们现在是基于传统用密码验证的,你看我这个连接的时候,这是不是把密码写进去的?
65:18
是不是啊,那我现在能不能也基于这个K验证来用插设连成连接远程主机呢?也是可以的,大家看这边有工具,这有新建用户密码生成向导,就是生成公钥。走这个向导就行了,默认用RC算法,大家看也支持别的算法啊,我们2048位默认这时候呢,它就会生成公交四对,看到没,是不是生成了,生成下一步啊,这个起了个名字就叫它啊这个名字比方说嗯,我就起了个名,比方王。的RCP。起个名啊,起个名。
66:02
然后这个私钥呢,你为了安全,你可以加个密码,我这不加了,下一步。啊,这个就是将来生成的那个公钥文件的文件内容,你把它保存一下。保存到哪去呢?保存到桌面上。好完成行了,这时候呢,就保存了,保存完了以后呢,呃,我们先把它先关一下啊关一下,然后这个文件现在已经被我放在桌面上了。就是这个公钥。当然,如果通道还是比较清醒的话,你应该知道我们现在接下来应该怎么办了。是不是把这公钥传到咱们的服务器上,放到那个authorri的case文件里,对不对啊,所以我们需要把它拷贝到咱们相来连接的这个机上,比方说。那现在我去考到这个80题上去考回来了。拷过来以后,我把这个文件呢,给它追加到点SSH的author的这个文件里去。
67:09
递加进去以后,大家看这里面是不是就放了,我刚才给他烤的那个功效,就这个就是跟拷过来的。啊,那现在实际上这个公钥就可以和咱们的私钥组合来实现基于可验证了,那怎么做呢?大家看我这时候呢,我把这个八的连接给它删了,重建,以前的话是基于用户密码的,现在我给他删了,删了以后重建一个。重建一个,我们点这个。新建新建的话呢,这会画名不重要,主要是这个主机主机是八,但是呢,现在我们不用那个基于K验证了,我们用什么呢?啊不用不用那个用户名来验证,我们用的是公钥,看到没公钥,然后公钥呢,用户名也是以入的身份。那么这个地方呢,公钥对应的那个信息对应的是这个私钥,哎,把它选选中就行了。
68:03
啊,这个因为私钥没有加密码,这就可以了,这样就行了,我们一连,你看应该是能连过去的,我确定一下连没有连上去吗?他说所有用户被注册。呃。这应该是写了呀,我确实没密码了。不行是吧,我看看我这个文件在哪儿。刚才公钥已经拷过去了,但是公钥的格式有错,看公钥的格式是不是有错。呃,可能有点错位是不是。加个换行是吧。看看这个地方是不是加了一个。你看这有RC,但这个最后这个地方没有换行,是不是加个换行。后面这有一个暑期,我这没有。
69:02
我这儿没有。那格式有问题吗?帮我看一下,重新连一下,嗯。嗯,在这。这不就是那个私药吗?他这个和这个版本有关系啊,因为我以前用的这个是叉十二五版本做的,现在这个是六版本了,看一下这个向导啊,做的时候也是这个向导一模一样的。用的是这个一模一样的,把这个文件呢复制下来。生成。嗯,一样的,你看这个做法也是一样的,追加。加到这个文件里。一样的。啊,权限。权限应该没事儿啊,权限我没动过。
70:00
那这个文件权限应该是没问题的,看看权限没问题啊。原先没有问题。帮我再贴上试试啊。上试一试,那七上看一下这里面有没有这个文件点SH,这也有,那我就把这个刚才那个内容放到七上去。啊。刚才那个公钥文件在哪放着呢,这个这个公钥文件,这是公钥文件好,然后把这个公钥文件呢拷贝从定向到点SH的。啊,那这里面就放了我们的新公钥了,把新公钥以后呢,我们再拿这个地方来连一下,我把这个呃,新建一个吧,我不删别了,我再写一个。
71:06
然后呢,这个地方指定它的验证上方式,我们用公钥。啊,这个呢,选择它的K还是这个K是吧。啊,用户名。这个。哎,可以,那看来八的版本不兼容到这了。看连上去了,密码不用输吧,就是JK验证嘛。啊,这个八的版本之间有兼容性问题啊。当然了,那这里面实际上就是你将来只要携带这个私钥就行了,这个私钥在哪呢?私钥你可以把它呃导出来啊,这个私钥文件你是可以把它导出来的啊,这个私钥你将来随身携带,因为你将来要连必须拿私钥,没有私钥的话连不上去。啊,因为你对方已经把公钥传过去了,但是私钥呢,这个你还需要。
72:03
带着这C在哪呢?在这这个用户密码和主机密码应该是用户密码,就这个,那这个你可以把它导出来。那导出来放桌面上,这就是那个私钥文件了,这个私钥文件呢,你要放在一个安全的地方啊,比方说你放到你的什么随身携带的U盘啊里面,将来走哪把它将来在叉里面,比方说我们换了一个新电脑,换了个新电脑以后呢,你想连对方,那就怎么连对方呢,那就是还是刚才那个方法。在这个地方先把它导进来。这不有个用户吗?新电脑这是不是没有这个东西的,把它删了,然后呢,你把它导入在导入进来,导入进来把你U盘那个私钥导进来。导进来以后呢,再连那不就跟我刚才一样讲的方法吗?啊,在这新建一个终端啊,再连这就可以了,那就是。就可明白了吧。
73:03
当然别把U盘丢了啊,U盘丢了别人拿你的私钥是不是想连服务器可以随时连,所以为了安全,最好还是对私钥怎么样加口令,加口令丢了私钥是不是也没事,对吧?这样比较安全啊,这就是私钥的实现。功效四,要JK验证是我们工作中用的非常多的。因为它可以。实现安全性的同时,还能够避免我们交互式的操作,从而方便我们批量的执行脚本之类的方法。啊,当然现在还有一个问题我们需要解决。工作中,你可能面临的是100台机器。面临的是1000台机器,那么这么多机器你刚装好系统,你要实现基于K验证,我们能干用刚才的方法吗?那刚才方法那得敲多少遍呀。所以我们是不是应该有什么方法能实现,基于可验证啊,批量的全实现了,100台机全给他实现了。
74:06
那这个怎么做呢?啊,这个问题我们下堂课再想,咱们休息一会儿,五点回来啊。
我来说两句