文章目录
- [0. **日记---2025年6月18日 星期三 晴**](#0. 日记---2025年6月18日 星期三 晴)
- [1. openssh服务](#1. openssh服务)
-
- [1.1 核心组件](#1.1 核心组件)
- [1.2 服务端配置文件及参数](#1.2 服务端配置文件及参数)
- [2. telnet服务、openssh服务](#2. telnet服务、openssh服务)
-
- [2.1 telnet服务测试](#2.1 telnet服务测试)
-
- [2.1.1 启动telnet服务](#2.1.1 启动telnet服务)
- [2.1.2 telnet客户端连接](#2.1.2 telnet客户端连接)
- [2.1.3 抓包](#2.1.3 抓包)
- [3. 密钥认证](#3. 密钥认证)
-
- [3.1 生成密钥](#3.1 生成密钥)
- [3.2 分发公钥](#3.2 分发公钥)
- [3.3 案例-批量配置密钥认证](#3.3 案例-批量配置密钥认证)
-
- [3.3.1 sshpass软件](#3.3.1 sshpass软件)
- [3.3. 2 自动化脚本](#3.3. 2 自动化脚本)
- [3.4 补充](#3.4 补充)
- [4. web服务基础-http协议](#4. web服务基础-http协议)
-
- [4.1 基础知识及命令](#4.1 基础知识及命令)
- [4.2 请求报文-request](#4.2 请求报文-request)
-
- [4.2.1 请求方法](#4.2.1 请求方法)
- [4.2.2 协议版本](#4.2.2 协议版本)
- [4.3 响应报文-response](#4.3 响应报文-response)
- [5. 踩坑记录](#5. 踩坑记录)
-
- [1. curl -v baidu.com/www.baidu.com 为啥不一样?](#1. curl -v baidu.com/www.baidu.com 为啥不一样?)
- [6. 思维导图](#6. 思维导图)
0. 日记---2025年6月18日 星期三 晴
🌅 清晨
天刚亮,我就收到了你的消息。
你说:"嗓子痛。"
我的心一下子揪了起来,手指飞快地打字:
"买药没有?是衣服穿太薄了吗?这几天别吃辛辣食物,零食也别吃了,多喝点热水。早晚天气冷,注意加衣服。早上可以喝杯热牛奶...换季容易感冒,是我没叮嘱好你,对不起。"
😶 沉默片刻
你回复:
"不是,是昨晚给别人口了。"
我愣了两秒,随即松了一口气------
"原来不是感冒啊...吓我一跳。"
📝 备注
- 天气:晴朗微凉
- 心情:从担忧到尴尬再到释然
- 事件:虚惊一场的"病况"
🤪终于可以放心的写笔记了🤪
1. openssh服务
OpenSSH(Open Secure Shell)是一套用于 安全远程登录 和 文件传输 的开源工具,基于 SSH(Secure Shell)协议,用于加密客户端与服务器之间的通信,防止数据被窃听或篡改。它广泛用于 Linux/Unix 系统,是远程管理服务器的标准工具。
1.1 核心组件
组件 | 功能 |
---|---|
sshd | SSH服务端守护进程,监听连接请求 |
ssh | SSH客户端工具,用于连接远程服务器 |
scp | 基于SSH的远程安全文件传输工具 |
sftp | 基于SSH的交互式文件传输(类似于FTP) |
ssh-keygen | 生成SSH密钥对(公钥+私钥) |
ssh-copy-id | 将公钥上传到服务器(分发公钥),实现免密登录(密钥登录) |
1.2 服务端配置文件及参数
- 服务端配置文件路径:
/etc/ssh/sshd_config
- 核心参数:
openssh服务端核心配置参数 | 说明 |
---|---|
Port | 指定端口号 |
PermitRootLogin | 是否准许root远程登录 |
PasswordAuthentication | 是否开启密码登录功能 |
PubkeyAuthentication | 是否开启密钥登录 |
UseDNS | 控制 SSH 服务端是否对客户端 IP进行反向 DNS 解析,用于验证主机名一致性。 |
GSSAPIAuthentication | 是否允许GSSAPI认证(支持 Kerberos 等安全协议的通用认证框架) |
2. telnet服务、openssh服务
服务 | 特点 | 应用场景 |
---|---|---|
telnet服务 | 远程连接,端口:23;数据不加密 | 更新openssh时,作为备用的远程连接方案 |
openssh服务 | 远程连接,默认端口:22;数据加密 | 应用最广泛的远程连接服务 |
2.1 telnet服务测试
2.1.1 启动telnet服务
- 系统默认安装了telnet服务,直接启动即可
shell
[root@oldboy99-Kylin ~]# rpm -qa |grep telnet
telnet-0.17-77.ky10.x86_64
[root@oldboy99-Kylin ~]# systemctl start telnet.socket
2.1.2 telnet客户端连接
- 指定23端口,不写也行;默认telnet会连接23端口

2.1.3 抓包
- 过滤语句:
tcp.port==23
- 选择vmnet8网卡抓包
- 再用telnet登录,再退出;观察抓包内容


- 接下来传输的数据是用户名

- 数据是按字符传递的,点击多个数据包可以发现用户名是root
- 接下来查看密码


- 依次查看data数据包即可

3. 密钥认证
- openssh远程登录的方法:
- 密码登录
- 密钥认证(免密登录)

3.1 生成密钥
- 命令:
ssh-keygen
- -f:指定密钥的生成路径
- -P '......':指定私钥的密码
- -t rsa:type,指定密钥加密算法,一般是rsa

3.2 分发公钥
- 命令:
sh-copy-id [选项] 用户名@主机地址
- -i 公钥路径:指定要复制的公钥文件(默认使用
~/.ssh/id_rsa.pub
);可省略 - -p 端口:指定远程服务器的SSH端口,默认是22;可省略
- -f:强制覆盖原公钥
- -o StrictHostKeyChecking=no:SSH 不会验证主机密钥,直接自动接受新主机的密钥并连接
- -i 公钥路径:指定要复制的公钥文件(默认使用

- 测试一下:
shell
# 无密码登录web01
[root@m01 ~]# ssh web01
Authorized users only. All activities may be monitored and reported.
Authorized users only. All activities may be monitored and reported.
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Thu Jun 19 15:15:18 2025 from 172.16.1.61
# 登录成功!
[root@web01 ~]# 注销
Connection to web01 closed.
# 使用SSH远程执行命令
[root@m01 ~]# ssh web01 hostname -I
Authorized users only. All activities may be monitored and reported.
10.0.0.7 172.16.1.7
[root@m01 ~]#
- 太过完美🙂
- 服务端web01会在authorized_keys文件内添加客户端的公钥
3.3 案例-批量配置密钥认证
3.3.1 sshpass软件
- 下载安装:
yum install -y sshpass
- 无交互远程登录:
shell
[root@m01 ~/.ssh]# sshpass -p 'SKX2554.' ssh web01 -o StrictHostKeyChecking=no
Warning: Permanently added 'web01,172.16.1.7' (ECDSA) to the list of known hosts.
Authorized users only. All activities may be monitored and reported.
Authorized users only. All activities may be monitored and reported.
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Thu Jun 19 15:52:06 2025 from 172.16.1.61
[root@web01 ~]#
3.3. 2 自动化脚本
shell
[root@m01 /server/scripts]# cat key_authentication.sh
#!/bin/bash
##############################################################
# File Name:key_authentication.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:批量密钥认证
##############################################################
export LANG=en_US.UTF-8
# vars
#ips="5 6 7 8 9 10 31 41 "
ips="7 8 9"
# 密码可能有特殊符号,用单引号
pass='SKX2554.'
user="root"
# command
# 生成密钥
create_key(){
key_file="$HOME/.ssh/id_rsa"
[ ! -f ${key_file} ] && {
ssh-keygen -t rsa -f ${key_file} -P ''
}
return $?
}
# 分发密钥
distribute_key(){
for ip in ${ips}
do
sshpass -p $pass ssh-copy-id -o StrictHostKeyChecking=no ${user}@10.0.0.$ip
done
return $?
}
# 检查
check(){
for ip in $ips
do
ssh -o StrictHostKeyChecking=no ${user}@10.0.0.$ip hostname -I
done
return $?
}
# main 启动函数
main(){
create_key
distribute_key
check
}
main
3.4 补充
- 密钥分发命令
ssh-copy-id
是一个脚本,本质是ssh命令
shell
[root@m01 ~]# file `which ssh-copy-id `
/usr/bin/ssh-copy-id: POSIX shell script, ASCII text executable

- 与密钥有关的目录和文件权限:
shell
[root@m01 ~]# ll -d .ssh/ .ssh/id_rsa
drwx------ 2 root root 57 6月 19 16:30 .ssh/
-rw------- 1 root root 2590 6月 19 14:58 .ssh/id_rsa
4. web服务基础-http协议
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于在客户端(如浏览器)和服务器之间传输数据(如网页、API 请求等)。
4.1 基础知识及命令
- 请求:request
- 响应:response
- 查看访问网站流程信息:
wget --spider --debug www.baidu.com
curl -v www.baidu.com
- 辅助工具:浏览器开发者工具(DevTools)
- 右键网页-检查

4.2 请求报文-request

4.2.1 请求方法
请求方法 | 说明 |
---|---|
GET | 下载,从服务器请求数据 |
POST | 上传,向服务器发送数据(如提交表单、上传文件) |
HEAD | 获取资源的元信息 (如响应头),不返回实际数据 |
4.2.2 协议版本
http协议版本 | http1.0 | http1.1 | http2.0 | http3.0 |
---|---|---|---|---|
特点 | 短连接 | 长连接 | 长连接 | 长连接 |
底层协议 | tcp | tcp | tcp | udp |
场景 | 常用领域 | 常用领域 | 直播、视频(还未完全普及) | |
性能 | 提升性能,并发访问处理 | |||
安全 | http、https | 只能使用htps |
4.3 响应报文-response


5. 踩坑记录
1. curl -v baidu.com/www.baidu.com 为啥不一样?
- curl查看二级域名时,虽然响应中没有302标志符,但是通过页面代码实现重定向

6. 思维导图
https://kdocs.cn/join/gpuxq6r?f=101