一、SSH服务
1.SSH(Secure Shell)
SSH是一种安全通道协议,用来实现字符界面得远程登录、远程复制等功能,SSH协议对通信双方得数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH是建立在应用层和传输层基础上的安全协议,对数据进行压缩并加快传输速度。远程管理linux系统基本上都要用到ssh协议,SSH是专门为了远程登录会话和其他忘了服务提供安全性得协议,利用SSH协议可以有效防止远程管理过程中得信息泄露问题,通过SSH可以对所有传输的数据进行加密。
2.SSH优点
1.数据传输是加密的,可以防止信息泄露
2.数据传输是压缩得,可以提高传输速度
3.SSH的客户端与服务端
1.客户端
1.Linux客户端:ssh,scp,sftp,slogin
2.Windows客户端:xshell,MobaXterm,putty,securecrt,ssh,secure,shell,client
3.SSH客户端的配置文件位置:/etc/ssh/ssh_config
2.服务端
1.SSH服务端:OpenSSH(开源)
2.ssh服务端主要包括两个服务功能:ssh远程连接和sftp服务(文件传输功能)
二、SSH的原理
1.公钥首次连接原理
1.客户端发起链接请求
2.服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
3.客户端生成密钥
4.客户端用自己的公钥或会话ID计算出一个值Res,并用服务端的公钥加密
5.客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
6.服务端用解密后的值Res或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
7.双方各自持有自己的一对公钥、私钥以及对方的公钥,之后的所有通讯都会被加密
2.ssh远程登陆
每次使用sshd登录到其他主机,双方都会生成一个文件known_hosts把对方主机的公钥存放在.ssh/known_hosts文件里,当用户第一次登录ssh服务器时,必须接受服务器发来的RSA密钥(需要根据提示输入:yes)后才能继续验证,接受的密钥信息将保存到~/.ssh/known_hosts文件中,密码验证成功以后,就登陆到目标服务器的命令行环境中了
命令格式:ssh -p(这里演示指定端口为默认端口22) root用户、目标的IP地址
注:如果sshd服务器使用了非默认的端口号,如:1379,则在登陆时必须通过-p选项指定端口号
三、OpenSSH服务器
1.OpenSSH
Centos7系统默认已安装openssh相关软件包,并将sshd服务添加为开机自启动
SSHD作用:SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传输文件,相较于之前的telnet方式传输文件要安全很多,因为telnet使用明文传输,SSH是加密传输
1.服务名称:sshd(服务默认使用的是TCP22端口)
2.服务端主程序:/usr/sbin/sshd
3.服务端配置文件:/etc/ssh/sshd_config
4.客户端配置文件:/etc/ssh/ssh.config
2.配置OpenSSH服务端
1.服务端配置文件位置:/etc/ssh/sshd_config
3.SSH服务实际功能实践
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客户端程序
1.远程安全复制:scp
下行复制:从目标主机192.168.7.130复制passwd文件到本机并改名为passwdeva.txt
上行复制:从本机复制/etc/ssh目录到192.168.7.130的/opt目录下
2.安全ftp上载:sftp
可以通过sftp远程连接目标进行操作:
五、免密登录
客户端eva,IP地址为192.168.7.131
服务端esdeath,IP地址为192.168.7.130
1.客户端生成密钥
2.客户端将公钥发给服务端
3.登录连接,登录到服务器不需要密码
六、ssh-agent命令
ssh-agent是OpenSSH认证代理,ssh-agent是一个用于保存公钥认证过程中用到的私钥的程序,当我们运行ssh-agent后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程,ssh-agent可以帮助我们选择对应的密钥进行认证,不需要手动指定密钥即可进行连接,当私钥设置了密码,我们又需要频繁的使用私钥进行认证时,ssh-agent可以帮助我们免去重复的输入密码的操作