“这是我参与8月更文挑战的第29天,活动详情查看:8月更文挑战”
茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你有所帮助!
愿你在未来的日子,保持热爱,奔赴山海!
Linux的高级命令
昨天我们已经将Linux的防火墙管理的命令学习了,知道了在Linux中如何去关闭防火墙,因为有些应用需要访问我们虚拟机的话,需要我们去开启某些端口允许外部访问或者关闭防火墙的操作!当然我们的学习不止于此。今天我们对Linux的免密登录学习! Let's GO!
Linux的SSH有密登录和免密登录
SSH 是一种网络协议,是 Secure Shell(安全外壳协议)的缩写,用于计算机之间的加密登录。
SSH 登录有两种验证机制:
- 基于口令的安全验证(有密登录)
- 基于秘钥登录的验证方式(免密登录)
登录远程服务器
命令:
ssh ip地址
演示:
有密登录效果
免密登录效果:要想实现免密,需要实现下面的步骤。
对称加密和非对称加密
ssh
的主要就是安全性,安全性依赖于加密方式,现在主要的加密方式有两种:对称加密和非对称加密。
-
对称加密
对称加密使用同一个密钥来进行加密和解密,这样在传输时是安全可靠的,但是如何安全的保存密钥呢,在集群中,客户端的数量巨大,一旦任意一个客户端的密钥被窃取,那么整个系统的安全性也不复存在。
-
非对称加密
由于对称加密的这个弊端,产生了非对称加密,非对称加密中有两个密钥:公钥和私钥。公钥由私钥产生,但却无法推算出私钥;公钥加密后的密文,只能通过对应的私钥来解密。
非对称加密的登录流程:
在非对称加密中,由于只有公钥会被传输,而私钥是服务端本地保存,因此即便公钥被监听,也无法拿到原始密码,从而登录服务器。
SSH免密登录原理
- 在客户端使用
ssh-keygen
生成一对密钥:公钥+私钥 - 将客户端公钥追加到服务端的
authorized_key
文件中,完成公钥认证操作 - 认证完成后,客户端向服务端发起登录请求,并传递公钥到服务端
- 服务端检索
authorized_key
文件,确认该公钥是否存在 - 如果存在该公钥,则生成随机数
R
,并用公钥来进行加密,生成公钥加密字符串pubKey(R)
- 将公钥加密字符串传递给客户端
- 客户端使用私钥解密公钥加密字符串,得到
R
- 服务端和客户端通信时会产生一个会话
ID(sessionKey)
,用MD5
对R和SessionKey
进行加密,生成摘要(即MD5
加密字符串) - 客户端将生成的
MD5
加密字符串传给服务端 - 服务端同样生成
MD5(R,SessionKey)
加密字符串 - 如果客户端传来的加密字符串等于服务端自身生成的加密字符串,则认证成功
- 此时不用输入密码,即完成建连,可以开始远程执行
shell
命令了
实现免密登录
其他位置都是linux系统自动完成校验
-
在fish生成一对公钥和私钥 (generate, 生成),使用rsa算法
ssh-keygen
-
将公钥发送给fishing服务器,必须给出fishing的密码fishing才接收公钥
ssh-copy-id 192.168.66.128
-
发送登录请求,实现免密登录
演示过程:
总结
相信各位看官都对Linux系统的去开启免密登录极其原理有了一定了解,期待等待下一章的Linux中的高级命令中的对一些服务的管理命令的学习吧!
当然还有更多命令等着下次一起看吧!欢迎期待下一章的到来!
让我们也一起加油吧!本人不才,如有什么缺漏、错误的地方,也欢迎各位人才大佬评论中批评指正!当然如果这篇文章确定对你有点小小帮助的话,也请亲切可爱的人才大佬们给个点赞、收藏下吧,一键三连,非常感谢!
学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!
感谢各位看到这里!愿你韶华不负,青春无悔!