ssh相关知识点
一、基本概念
ssh的全称:
secure shell ,翻译为中文即为安全外壳协议。是一种加密的数据传输协议,用于在不安全的网络环境中进行安全的网络通信。
我们在以后开发web,或者是自己运营博客的时候,需要用到自己的服务器。但是往往自带的远程连接的工具不是很好用,于是我们有了想要ssh连接服务器的需要。
SSH协议主要是实现三个功能:
一、用户与服务器的验证,确保数据可以正确的发送到客户机或者是服务器上
二、加密数据,确保数据的安全性与私密性
三、确保数据的完整性
那么SSH协议是如何实现的呢?
这里,我们先介绍两个概念
对称加密算法
与 非对称加密算法
对称加密算法:用同一把钥匙进行加密和解密运算。于是对于发送方与接收方来说,任意一方得到钥匙都可以进行解密。
优点是,计算量小,速度快,而且方便。但是有一个极大的漏洞就是这也导致了他的安全性往往不是很高。因为,万一这把钥匙落到了第三方的手中,那么对于client端与server端的信息就直接暴露了。
非对称加密算法:这里就多了一个公钥的概念。
发送的一端自己生成了一个公钥与一个私钥,他想要与接收端进行通信的时候,就把公钥扔给他,向他发送用私钥加密过的数据,接收方用私钥进行解密即可。
有两个需要注意的地方:
公钥与私钥其实并没有说谁必须是公钥或者是私钥,他们只是满足
公钥加密后的数据只有私钥可以解开,同时私钥加密后的数据也只有公钥可以解开
公钥不可以解开自己加密后的数据,私钥不可以解开自己加密后的数据
SSH实现过程:
每次登陆的过程
1.client端发送login request进行唤醒server。
2.server发送公钥给client ,client端用公钥对自己的密码进行加密后,再次发送给server端
3.server端接收session-key,用自己的私钥进行解密,然后判断client的身份信息,进行登陆时的身份验证。
可以看出每次登陆时一种极其浪费时间的一种做法。
我们再来看一下
ssh免密登陆的过程:
1.client在本地生成公钥和私钥,然后将公钥手动复制给server
2.client同样发送login request 唤醒server
3.server端于是随机生成一个数R,用公钥进行加密后发送给client(pubkey)
4.client端用私钥进行解密得到R,同时用MD5对R和session-key进行生成Digest1
5.server端同样也对R与session-key生成Digest2,同时判断两者是否相同。
二、两个作用:
1.远程登陆自己的server
(1)将user和hostname省略
(2)免密登录 可以登录多个server
2.scp本地与server、server与server之间传输文件