跳到主要内容

第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. **交互式操作**:认证成功后,客户端即可开始与服务器进行安全的交互式操作或执行远程命令。

这个过程确保了即使网络数据被截获,没有私钥的第三方也无法解密通信内容,提高了连接的安全性。

1715826047963-12cafcec-e81f-490d-b032-6e08a0b641f9.png

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