定义:

SSH 是由 IETF制定的建立在应用层基础上的安全网络协议。


作用:

1. 它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)

2. 为其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。

3. 通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

4. 传输的数据是经过压缩的,所以可以加快传输的速度。

所以SSH目前已经成为Linux系统的标准配置。

 

SSH的安全机制

1.SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据。

 

2.传统的网络服务程序,如FTP等在网络上用明文传送数据、用户帐号和用户口令,很容易被别人获取。

 

3.但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:

 

第一种级别(基于口令的安全验证):只要知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器。

 

第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止其他人破坏。


图文详解:

环境:2台centos7虚拟机

虚拟机1:test01  ip:192.168.220.137

虚拟机2:test02  ip: 192.168.220.129

1.用虚拟机test02远程登录test01,输入命令

[root@test02 ~]# ssh [email protected]


2.通过修改test01修改配置文件限制其他用户远程登录root账户

[root@test01 ~]# vim /etc/ssh/sshd_config

重启服务

[root@test01 ~]# systemctl restart sshd

此时用test02远程登录test01的root账户来验证


3.添加白名单

[root@test01 ~]# vim /etc/ssh/sshd_config


重启服务,用test02验证



4.添加黑名单(注意,这里白名单和黑名单只能存在一个,不能同时存在)

[root@test01 ~]# vim /etc/ssh/sshd_config


重启服务,验证


4.秘钥的安全加密

[root@test02 ~]# ssh-keygen -t ecdsa

 

导入公钥到对应要远程登录的账户

[root@test02 ~]# ssh-copy-id -i id_ecsda.pub [email protected]


验证


5.免交互远程登录

[root@test02 ~]# ssh-agent bash

[root@test02 ~]# ssh-add


6.sftp远程下载上传文件

上传



下载


7.TCP Warppers访问控制策略

配置文件:/etc/hosts.allow

                  /etc/hosts.deny

策略的应用顺序:1.先检查hosts.allow文件,找到匹配则允许访问

                            2.否则再查找hosts.deny文件,找到则拒绝访问

                          3.若2个文件均找不到匹配策略,则默认允许访问