第9章 SSH安全连接
第1章 SSH协议介绍
1.Linux连接方式
SSH连接
Telnet连接-不安全
本地显示器键盘支直连
2.为什么使用SSH?
SSH服务:
linux默认 安全性好 传输加密 默认端口号22
TELNET服务:
网络设备上默认的是telnet 安全性较差 传输明文 默认不允许用root登录 默认端口号23
3.抓包演示
抓包工具
Wireshark
tcpdump
安装telnet服务
yum install -y telnet-server
systemctl start telnet.socket
systemctl status telnet.socket
netstat -lntup|grep 23
第2章 SSH身份认证方式
1.SSH服务的两种认证方式
1.基于帐号、密码认证
2.基于密钥对(公钥和私钥)认证
2.SSH密钥对认证流程
1. **生成密钥对**:
- 客户端在本地生成一个RSA或ECDSA类型的密钥对。这通常通过运行命令 ssh-keygen 完成。
- 此过程会产生一个私钥(通常保存在 ~/.ssh/id_rsa)和一个公钥(保存在 ~/.ssh/id_rsa.pub)。
2. **复制公钥到服务器**:
- 客户端使用 ssh-copy-id 命令或者手动将公钥内容追加到服务器上对应用户的 ~/.ssh/authorized_keys 文件中。
- 这一步骤使得服务器能够识别并信任客户端的公钥。
3. **客户端发起连接请求**:
- 客户端尝试通过SSH连接到服务器,发送请求时包含了客户端的用户名。
4. **服务器验证客户端**:
- 服务器接收到连接请求后,查找 ~/.ssh/authorized_keys 文件中与客户端提供的用户名对应的公钥。
5. **密钥交换与认证**:
- 服务器生成一个随机数,并使用客户端的公钥对其加密,然后发送给客户端。
- 客户端用私钥解密这个随机数,并使用这个随机数对会话密钥进行加密并发送回服务器。
6. **客户端响应**:
- 客户端使用私钥解密服务器发送的数据,处理其中的认证信息。
- 客户端可能需要使用会话密钥来加密一些响应信息回传给服务器,证明自己能够解密并处理了服务器的挑战。
7. **建立连接**:
- 一旦服务器验证了客户端的响应正确无误,表明客户端确实持有与授权公钥匹配的私钥,认证成功。
- 双方随后使用协商好的会话密钥来加密后续的所有通信,确保通信的安全性。
8. **交互式操作**:认证成功后,客户端即可开始与服务器进行安全的交互式操作或执行远程命令。
这个过程确保了即使网络数据被截获,没有私钥的第三方也无法解密通信内容,提高了连接的安全性。
3.简单总结
1. 客户端 - 服务端 请求建立ssh远程连接
2. 服务端 - 客户端 请求确认公钥信息
3. 客户端 - 服务端 确认接收公钥信息,保存到~/.ssh/authorized_keys文件中
4. 服务端 - 客户端 询问用户密码信息
5. 客户端 - 服务端 用户密码信息
6. 服务端 - 客户端 确认密码信息正确 远程连接建立
1之后:不用反复确认公钥信息
6之后:所有传输的数据信息会进行加密处理
第3章 SSH密钥对认证实战
1.记忆方法
**1个目录:**
~/.ssh SSH相关文件默认保存在当前用户的家目录下
**2个命令:**
ssh-keygen 创建密钥对
ssh-copy-id 发送公钥
**4个文件:**
id_rsa 私钥-->钥匙
id_rsa.pub 公钥-->锁
known_hosts 记录ssh连接过的主机指纹信息
authorized_keys 保存其他服务器的公钥信息
2.密钥对免密登录
第一步:创建密钥对
ssh-keygen
第二步:发送公钥到服务器
ssh-copy-id 服务器IP地址
第三步:验证是否可以免密登录
ssh 服务器IP地址
3.注意事项
1)使用哪个用户创建的密钥对,那么.ssh是当前用户家目录下
2)~/.ssh目录的权限是700
3)id_rsa私钥的权限是600
4)authorized_keys保存公钥的文件权限也是600
第4章 SSH远程执行命令
1.SSH远程执行命令说明
SSH不仅仅可以用来连接服务器,也可以远程执行命令。
SSH远程执行命令并不需要登陆到远程服务器,只需要配置好密钥对即可,执行完成后进程就结束了。
2.SSH远程执行命令格式
ssh 目标主机IP '需要执行的命令'
3.注意事项
1)ssh远程执行命令最好加引号,不然容易引起误会,不知道哪些是需要在远程执行的命令
2)第一次连接服务器时会提示记录主机指纹信息,如果服务器有多个IP,每个IP都会记录一次
第5章 SSH免交互分发公钥
1.为什么要做免交互分发公钥?
假如100台服务器 难道你需要输100次密码?
2.目前需要交互的地方
第一次交互:私钥的保存路径
[root@nfs-31 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
第二次交互:私钥密码
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
第三次交互:确认密码
Enter same passphrase again:
第四次交互:确认指纹信息
[root@nfs-31 ~]# ssh-copy-id 10.0.0.41
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.
ECDSA key fingerprint is SHA256:T7PEadLsF6pTId3DlsZg4WpHg4jv4wh64hzobQ0ZFjQ.
ECDSA key fingerprint is MD5:d2:e2:83:84:d4:30:bd:3e:0b:5c:22:01:8d:6a:4e:25.
Are you sure you want to continue connecting (yes/no)?
第五次交互:输入主机密码
root@10.0.0.41's password:
3.免交互分发密钥步骤
第一次交互:指定私钥的保存路径
ssh-keygen -f /root/.ssh/id_rsa
第二次交互:指定私钥密码
ssh-keygen -f /root/.ssh/id_rsa -N ''
第四次交互:不确认指纹信息
ssh-copy-id 10.0.0.41 -o StrictHostKeyChecking=no
第五次交互:自动输入主机密码
yum install sshpass -y
sshpass -p "123" ssh-copy-id 10.0.0.41 -o StrictHostKeyChecking=no
最终效果:
#!/bin/bash
ssh-keygen -f /root/.ssh/id_rsa -N '' &>> /dev/null
for i in $(cat pass.txt) #10.0.0.41:111
do
ip=$(echo $i|awk -F":" '{print $1}') #10.0.0.41
pa=$(echo $i|awk -F":" '{print $2}') #111
sshpass -p "$pa" ssh-copy-id $ip -o StrictHostKeyChecking=no &>> /dev/null
ssh $ip 'hostname'
done
第6章 SSH安全配置
1.ssh知识点
ssh默认端口号是22
ssh是一个服务,服务名是sshd
sshd服务的配置文件/etc/ssh/sshd_config
2.目前SSH不安全的地方
1)虽然设置了公钥认证,但是原来的密码认证还是可以连接的
2)SSH协议的端口号默认是22,全世界的人都知道
3)SSH默认允许所有IP段连接的,应该只允许172内网网段才能连
4)SSH默认是允许root登录
3.解决密码登录问题
PasswordAuthentication no
4.解决默认端口号和IP地址
Port 2222
ListenAddress 172.16.1.7
5.不允许root帐号直接登录
PermitRootLogin no
第7章 开心作业
正常人类作业:
windows:
1.xshell生成密钥对
2.将xshell公钥上传到管理机m-61
m-61 管理机-可手动操作:
1.更改ssh默认端口号为9999
2.关闭用户名密码登录方式
被管理机-可手动操作:
1.更改ssh默认端口号为9999
2.关闭用户名密码登录方式
3.指定监听内网地址 172.16.1.x
实现效果:
1.管理机m-61只能通过xshell的秘钥方式连接,IP地址用户名密码方式不允许
2.所有主机ssh端口修改为9999
3.被管理机只能通过管理机通过172内网地址使用秘钥认证连接,10网段不允许连接.不允许使用账号密码方连接
非正常人类作业:提前做好快照
一个脚本完成以下所有任务:
1.管理机自动创建密钥对
2.管理机自动将公钥免交互发送到被管理机
3.远程修改被管理机的SSH连接端口为9999
4.远程修改被管理机的SSH监听地址为172.16.1.X
5.远程修改被管理机不允许使用账号密码方式登陆,只允许使用密钥方式连接
6.远程修改完之后验证是否生效,验证方法为使用9999端口连接被管理机并打印出主机信息
建议咨询心理医师作业:
完成提高作业的基础之上:
1.在m-61上完成远程一键安装rsyncd服务端并好配置文件并启动
2.在m-61上完成远程一键安装nfs服务端及修改好配置文件并启动
3.在m-61上完成远程一键安装lsyncd服务以及修改好配置文件并启动
4.在m-61上完成web服务器正常挂载并写入挂载自启动配置文件
4.所有服务安装完成后测试成功
- web服务器可以正常挂载nfs共享目录
- web服务器上传文件后,nfs服务器自动把?文件实时同步到backup服务器
更新: 2024-11-23 09:24:01