什么是SSH?
SSH 为 [Secure Shell] 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为[远程登录]会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。[SSH客户端]适用于多种平台。几乎所有UNIX平台—包括[HP-UX]、[Linux]、[AIX]、[Solaris]、Digital [UNIX]、[Irix],以及其他平台,都可运行SSH。
ssh协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此ssh协议具有很好的安全性
- 服务名称:sshd
- 服务端主程序:/usr/sbin/sshd
- 服务端配置文件:/etc/ssh/sshd_config
- 客户端配置文件:/etc/ssh/ssh.config
公钥与私钥
如果使用对称加密算法,加解密使用同一个密钥,除了自己保存外,对方也要知道这个密钥,才能对数据进行解密。如果你把密钥也一起传过去,就存在密码泄漏的可能。所以我们使用非对称算法,过程如下:
- 首先 接收方 生成一对密钥,即私钥和公钥;
- 然后,接收方 将公钥发送给 发送方;
- 发送方用收到的公钥对数据加密,再发送给接收方;
- 接收方收到数据后,使用自己的私钥解密。
由于在非对称算法中,公钥加密的数据必须用对应的私钥才能解密,而私钥又只有接收方自己知道,这样就保证了数据传输的安全性。
服务端配置
#设置黑白名单
#llowUsers yuji@192.168.72.10 lisi //只允许yuji用户从192.168.72.10访问,允许lisi从 所有地址访问
#enyUsers liwu //不允许使用liwu用户登录
白名单的优先级大于黑名单
SCP传输
Linux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的, 是不加密的,scp 是 rcp 的加强版。
sftp tcp 22端口 安全的ftp,传输时会加密,传输效率比普通ftp低,但是安全性高
ftp tcp20 21端口 常规的文件传输协议,明文传输,传输数据较快但不安全,一般是用在局域网
tftp udp69端口 轻量级的文件传输协议,一般用于传输体积小的文件
**ssh -p 端口号 root@目标之间地址 ##远程连接,(端口号默认22)**
scp -P(大写)端口号 -r 客户端文件路径 root@服务端地址:目标保存路径 ##向目标主机推送文件
客户端向服务端发送文件:
scp root@服务端地址 :服务端保存路径 本机文件路径 ##从服务端接收文件
客户端向服务端接收文件:
TCP Wrappers 访问控制
TCP_Wrappers是Linux中的一个安全机制【TCP Wrappers防火墙】也可以成为访问控制,一定程度上达到了保护系统的目的,相当于我们手机的黑名单和白名单,对访问我们服务器的用户进行设置和管理。
TCP_Wrappers是一个工作在第4层(传输层)的安全工具,对有状态及特定服务进行安全检测并实现访问控制,凡是包含有libwrao.so库文件的程序就可以受tcp wrappers的管理。它的主要功能就是控制谁可以访问。
配置文件:
白名单: /etc/hosts.allow
黑名单:/etc/hosts.deny
vim /etc/hosts.allow ##编辑白名单
sshd:192.168.72.10,192.168.72.20 //允许这两个地址使用sshd服务进行访问
sshd:192.168.4.0/255.255.255.0 //允许该网段的所有地址使用sshd服务进行访问
——————————————————————
vim /etc/hosts.dent##编辑黑名单
sshd:ALL //禁止所有地址使用sshd服务进行访问
sshd:192.168.0.0/255.255.255.0 EXCEPT 192.168.0.10 //
禁止该网段的所有地址使用sshd服务进行访问,除了192.168.0.10
免交互登陆实验
第一步:在客户端创建密钥对
设置完成后.ssh目录下会生成两个文件,前者为 私钥,后者为公钥。
第二步:将公钥文件导入进服务端
此方法使用的自动,我们也可以使用手动的方法将客服端公钥文件复制到服务端的用户目录中的.ssh的auhorized-key文件中
第三步:在客户端进行验证
此时我们发现验证不需要密码即可连接。
设置免交互登录时我们可以选择以上方法,将密钥密码设置为空密码。
也可以使用创建密钥对完成后,在客户端 ssh-agent bash 与 ssh-add控制命令,此方式只能在当前连接中有效