SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
SSH客户端<--------------网络---------------->SSH服务端
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)
作用:
SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。 相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输,SSH 是加密传输。
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
客户端发起链接请求
服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
客户端生成密钥对
客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
客户端发送加密值到服务端,服务端用私钥解密,得到Res
服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
1、概念
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用
2.常用算法
在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等
3、特点
1、加密方和解密方使用同一个密钥;
2、加密解密的速度比较快,适合数据比较长时的使用;
3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
4、优缺点
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担
1、概念
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
2、常用算法
RSA(RSA algorithm):目前使用最广泛的算法
DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
ECC(Elliptic curve cryptography,椭圆曲线加密算法)
ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障
3、原理
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下
4、优缺点
相比于对称加密技术,非对称加密技术安全性更好,但性能更慢。
此本次实验中,我们用非对称加密算法ECDSA进行加密,为了方便用root用户,也可给其他普通用户配置
1.ssh [email protected]
2.ssh -l root 172.16.18.4
# -l:指定登录名称
# -p:指定登录端口
3.ssh 172.16.18.4 ifconfig
我们登录时,怎么确认是不是我需要连接的服务器?
################
先连接自己得出的结果,对比一下,连接对面的结果,是否一致,一致的话,就是我们要连接的服务器
#修改默认端口
[root@localhost ssh]#vim /etc/ssh/sshd_config
#17 行修改自己默认的端口
17 Port 9527
禁止root用户登录
[root@localhost ssh]#vim /etc/ssh/sshd_config
#开启38 行 并改为 no,默认注释并写的yes
38 PermitRootLogin no
#注意虽然阻止了root 但是普通用户可以使用su
去掉,每次询问yes or no,修改文件
3.白名单黑名单列表
[root@localhost ssh]#vim /etc/ssh/sshd_config
#手动添加
AllowUsers [email protected] lisi
#允许所有有的主机访问我的lisi用户
#只允许 zhangsan 从192.168.91.101上访问
原理:
用户/密码
基于秘钥
用户/密码:
1.生成公钥和私钥
2.将公钥导给对面
客户端发起ssh请求,服务器会把自己的公钥发送给用户
用户会根据服务器发来的公钥对密码进行加密
加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功
首先在客户端生成一对密钥(ssh-keygen)
并将客户端的公钥ssh-copy-id 拷贝到服务端
当客户端再次发送一个连接请求,包括ip、用户名
服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc
服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.18.6
tr:对文件字符进行处理
把文件里的小写转为大写
tr abcd 123
#将abcd转为123,对应匹配不够时,默认转为后一个,也就是,c和d都转为3
tr -s a
tr -d a
cat /dev/random | tr -dc [a-zA-Z0-9] | head -c 12
seq 10
seq -s+ 100
seq -s+ 100|bc
seq 1 2 10
#打印奇数
seq 0 2 10
#打印偶数
seq -s+ 1 2 100|bc
#奇数和
seq -s+ 0 2 100|bc
#偶数和
-d:指明分隔符是什么
-f:想要获取的字段
cut -d: -f1,3 /etc/passwd
#以:为分隔符,切出第一例和第三例
tr -s " "
#压缩空格
df | tr -s " " | grep sda
压缩空格,并过滤出sda
df | tr -s " " | grep sda | cut -d" " -f5
#压缩空格,并过滤出sda,以空格为分隔符,切出第五列
df | tr -s " " | grep sda | cut -d" " -f5 | tr -d %
######################################
df | tr -s " " | grep sda | cut -d" " -f5 | cut -d% -f1
ll | tr -s " " | cut -d " " -f9 | tail -n +2
ifconfig ens33 | tr -s " " | grep netmask | cut -d" " -f3