一、SSH服务介绍
1.1什么是SSH
SSH (Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建
立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
远程管理Linux系统基本上都要使用到ssh。
1.2SSH优点
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
1.3SSH软件
SSH 客户端:finalshell xshell putty secureCRT MobaXterm
SSH 服务端:openSSH (Centos 7 默认安装)
1.4openSSH服务器配置文件
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
openSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。
1.4.1服务端配置文件位置:/etc/ssh/sshd_config
1.4.2SSH服务实际功能实践
1.建议使用非默认端口22
2.禁止使用protocol version 1
3.限制可登录用户(白名单)
4.设定空闲会话超时时长
5.利用防火墙设置ssh访问策略
6.仅监听特定的IP地址、公网、内网
7.基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_< /dev/urandom/head -c 12|xargs
8.使用基于密钥的认证
9.禁止使用空密码
10.禁止root用户直接登录
11.限制ssh的访问频度和并发在线数
12.经常分析日志分离
二、SSH原理
2.1公钥传输原理
客户端发起链接请求
服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
客户端生成密钥对
客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
客户端发送加密值到服务端,服务端用私钥解密,得到Res
服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
2.2scp:远程安全复制
scp [-r] 其他主机的用户名@其他主机IP:原文件 目标目录
例如:本机IP地址为192.168.211.100,目标主机(其他主机)IP地址为192.168.211.100
三、实验免密登录
客户端IP地址为192.168.211.100,服务端IP地址为192.168.211.10
1、客户端生成密钥
2、客户端将公钥发给服务端
3.登录连接
四、ssh-agent命令
ssh-agent是OpenSSH认证代理,ssh-agent是一个用于保存公钥认证过程中用到的私钥的程序,当我们运行ssh-agent后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程,ssh-agent可以帮助我们选择对应的密钥进行认证,不需要手动指定密钥即可进行连接,当私钥设置了密码,我们又需要频繁的使用私钥进行认证时,ssh-agent可以帮助我们免去重复的输入密码的操作