目录
一、SSH协议是什么?
1、SSH协议的定义:
2、SSH协议的优点
3、SSH的客户端与服务端
4、SSH的原理
4.1公钥首次连接原理
4.2ssh远程登录
4.3使用简单的SSH远程登录
二、OpenSSH服务器
1、OpenSSH简介
2、配置Openssh服务端
3、SSH服务的最佳实践
三、免密登录
一、SSH协议是什么?
1、SSH协议的定义:
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
SSH客户端<--------------网络---------------->SSH服务端
2、SSH协议的优点
①数据传输是加密的,可以防止信息泄露
②数据传输是压缩的,可以提高传输速度
3、SSH的客户端与服务端
客户端
①Linux客户端:ssh,scp,sftp,slogin
②Windows客户端:xshell,MobaXterm,putty,securecrt,ssh secure shell client
③SSH客户端的配置文件:/etc/ssh.ssh_config
服务端
①SSH服务端:OpenSSH(开源)
②ssh服务端主要包括两个服务功能:ssh远程连接和sftp服务
4、SSH的原理
4.1公钥首次连接原理
①客户端发起连接请求
②服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
③客户端生成密钥对
④客户端用自己的公钥或会话ID,计算出一个值Res,并用服务端的公钥加密
⑤客户端发送加密后的值到服务端,服务端用密钥解密,得到Res
⑥服务端用解密后的Res或者是会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
⑦最终:双方各持有三个密钥,分别为自己的一对公钥、私钥、以及对方的公钥,之后的所有的通讯都会被加密。
4.2ssh远程登录
每次使用sshd登录到其他主机,双方都会生成一个文件known_hosts把对方主机的公钥在.ssh/known_hosts文件里。
格式:
ssh [选项] zhangsan@192.168.80.77 #指定登录用户、目标主机地址作为参数
ssh -p 20 zhangsan@192.168.80.77 #-p为指定端口
4.3使用简单的SSH远程登录
二、OpenSSH服务器
1、OpenSSH简介
①服务名称:sshd(服务默认使用的是tcp的22端口)
②服务端主程序:/usr/sbin/sshd
③服务端配置文件:/etc/ssh/sshd_config
④客户端配置文件:/etc/ssh/ssh.conf
centos7系统默认已安装openssh相关软件包,并将sshd服务添加为开机自启动
sshd作用:sshd服务使用ssh协议可以用来用来进行远程控制,或在计算机之间传输文件。
相比较之前的telnet方式传输文件要安全很多,因为telnet使用明文传输,ssh是加密传输
2、配置Openssh服务端
vim /etc/ssh/sshd_config #服务端配置文件
#Port 22 #监端口为22
#AddressFamily any #监听地址为任意网卡,也可以指定Openssh服务器的具体ip
#LoginGraceTime 2m #登录验证时间为2分钟
#PermitRootLogin yes #禁止root用户登录
#MaxAuthTries 6 #最大重试次数为 6
#PermitEmptyPasswords no #禁止空密码用户登录
#UseDNS no #禁用DNS反向解析,以提高服务器的响应速度
----------------------------------------------------------------------------------
配置允许和禁止用户登录:加@表示限制ip,注意允许和禁止不要同时使用!!
AllowUsers zhangsan #允许zhangsan登录
AllowUsers zhangsan@192.168.80.80 #只允许zhangsan通过192.168.80.80登录
DenyUsers lisi #禁止lisi登录
实例:只允许hanbao zhaji用户登录,但是其中hanbao用户仅能从IP地址为192.168.170.80的主机远程登录
vim /etc/ssh/sshd_config #修改服务端配置文件
-------------------------------------------------------
AllowUsers zhangsan lisi@192.168.80.80 hanbao #这里为添加的配置
-------------------------------------------------------
systemctl reload sshd #修改完记得重新加载
3、SSH服务的最佳实践
①建议使用非默认端口22
②禁止使用protocol version 1
③限制可登录用户(白名单)
④设定空闲会话超时时长
⑤利用防火墙设置SSH访问策略
⑥仅监听特定的IP地址、公网、内网
⑦基于口令认证时,使用强密码策略
⑧使用基于密钥的认知
⑨禁止使用空密码
⑩禁止root用户直接登录
11、限制ssh的访问频率和并发在线数
12、经常分析日志分离
三、免密登录
客户端地址为192.168.170.111.服务端IP地址为192.168.170.113
1、客户端生成密钥
2、客户端将公钥发给服务端
3、登录连接