目录
一、SSH服务
1.1 什么是SSH服务器
1.2 SSH原理
1.3 服务端配置
1.3.1 常用配置
1.3.2 使用秘钥对及免交互验证登录
1.4 安全
1.5 ssh客户端
二、TCP Wrappers
2.1 策略的配置格式
2.2访问控制的基本原则
三、轻量级自动化运维工具pssh
3.1 简介
3.2 配置过程
四、总结
一、SSH服务
1.1 什么是SSH服务器
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度
优点:
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务
作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。
Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。
执行"systemctl start sshd"命令即可启动sshd 服务
sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)
OpenSSH
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
1.2 SSH原理
客户端发起链接请求
服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
客户端生成密钥对
客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
1.3 服务端配置
1.3.1 常用配置
[root@localhost ~]# vim /etc/ssh/sshd_config #进入服务端的配置文件
Port 220 关闭selinux
1.3.2 使用秘钥对及免交互验证登录
登录原理:
用户/密码
基于秘钥免交互验证登录
用户/密码
客户端发起ssh请求,服务器会把自己的公钥发送给用户
用户会根据服务器发来的公钥对密码进行加密
加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功
基于秘钥免交互验证登录
首先在客户端生成一对密钥(ssh-keygen)
并将客户端的公钥ssh-copy-id 拷贝到服务端
当客户端再次发送一个连接请求,包括ip、用户名
服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串
服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
[root@localhost ~]# ssh-keygen --help unknown option -- - usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1] [-N new_passphrase] [-C comment] [-f output_keyfile] #-t 表示加密方式,不加是随机 # dsa | ecdsa | ed25519 | rsa | rsa1 表示不同的加密算法
上面输入的密码是自己设置ecdsa加密后登录的密码,如果也不想要输入ecdsa密码,全部回车
思考:
设置免密登录后,服务端root改密码后,客户端还能登录吗
答案是可以登录的,因为已经根据密钥对来登录了,与root的密码无关
与用户密码无关
与IP地址无关
只与密钥对有关
1.4 安全
1.通过对比密钥判断是不是我们需要连接的机子
2. 限制可登录用户
[root@localhost ~]# vim /etc/ssh/sshd_config #进入服务端的配置文件
1.5 ssh客户端
命令 功能 ssh 远程安全登录(使用端口-p 22) scp 远程安全复制 sftp 安全ftp上下载