🌀 鱼油のB10g

✦ 不定期更新技术随想

✦ 分享奇妙发现

📌 近期动态:

探索AI和工具使用...

第3章 第15.3天

今天我们来拆解服务器管理的"安全卫士"——SSH协议。从连接校园服务器到云端部署代码,背后都是它在守护你的数据安全。我会用实验室服务器管理、远程开发调试这些真实场景,带你理解SSH如何构建加密隧道。

一、SSH协议基础:安全连接的基石
协议定位:基于TCP 22端口的加密远程管理协议
核心价值:解决Telnet的明文传输缺陷
典型场景:

安全登录校园Linux服务器
远程部署网站代码
传输敏感实验数据
Bash

查看SSH服务状态(Linux)

sudo systemctl status sshd

输出示例:

● ssh.service - OpenBSD Secure Shell server

Loaded: loaded (/lib/systemd/system/ssh.service; enabled)

Active: active (running) since Mon 2023-06-05 10:00:00 CST;

二、协议分层架构:三位一体的安全体系

  1. 传输层协议(SSH-TRANS)
    核心功能:建立加密通道,服务器认证
    关键技术:

Diffie-Hellman密钥交换:在不安全通道建立共享密钥
服务器指纹验证:防止中间人攻击
图表
代码
下载
服务器
客户端
服务器
客户端
支持的加密算法列表
选择算法+服务器公钥
计算会话密钥
计算会话密钥
用会话密钥加密的测试消息
加密响应确认
2. 用户认证协议(SSH-USERAUTH)
认证方式:

密码认证
Bash
ssh username@server_ip

提示输入密码(加密传输)

密钥认证(推荐)
Bash

生成密钥对

ssh-keygen -t ed25519

部署公钥到服务器

ssh-copy-id username@server_ip
3. 连接协议(SSH-CONNECT)
通道复用:

Shell会话:交互式命令执行
端口转发:安全访问内网服务
文件传输:SCP/SFTP协议
Bash

本地端口转发(访问内网数据库)

ssh -L 63306:db.internal:3306 user@jump_server

文件传输

scp lab_report.pdf user@server:/home/user/reports/
三、密钥认证详解:免密登录的奥秘
密钥对组成:

私钥(客户端保存):~/.ssh/id_ed25519
公钥(服务器保存):~/.ssh/authorized_keys
认证流程:

客户端发送公钥指纹
服务器检查authorized_keys文件
若匹配,发送加密质询(随机数)
客户端用私钥解密后返回
服务器验证解密结果
Python

SSH密钥认证伪代码

def authenticate(public_key):
if public_key in authorized_keys:
challenge = random_number()
encrypted = encrypt(challenge, public_key)
send_to_client(encrypted)

    response = receive_from_client()
    if response == challenge:
        return True  # 认证成功
return False

四、Wireshark实战分析:窥探加密隧道
实验准备:

Kali Linux启用SSH服务:
Bash
sudo apt install openssh-server
sudo systemctl start ssh
客户端连接:
Bash
ssh kali@<kali_ip>
Wireshark过滤:
Wireshark
tcp.port == 22
关键分析点:

协议协商阶段(明文可见)

客户端支持算法列表:SSH: Client: Key Exchange Init
服务器选择算法:SSH: Server: Key Exchange Init
密钥交换阶段(部分明文)

Diffie-Hellman参数交换:SSH: Server: Key Exchange ECDH Init
服务器主机密钥:SSH: Server: Key Exchange ECDH Reply
加密阶段(完全加密)

后续数据包显示为Encrypted SSH packet
数据长度和方向可见,内容不可读
五、安全加固实践:企业级防护
禁用密码登录
Bash

/etc/ssh/sshd_config

PasswordAuthentication no
限制登录IP
Bash
AllowUsers admin@192.168.1.*
更改默认端口
Bash
Port 2222
使用证书认证
Bash

生成CA证书

ssh-keygen -f ca_key

签署用户公钥

ssh-keygen -s ca_key -I user_id -n user_id user.pub
六、高级应用:SSH隧道妙用
穿透防火墙访问内网
Bash

建立跳板连接

ssh -J user@jump_server user@internal_server
远程开发调试
Bash

VSCode远程开发

安装"Remote - SSH"扩展 → 连接SSH主机
安全传输文件
Bash

使用rsync增量同步

rsync -avz -e ssh ./project user@server:/backup/
总结:SSH的安全设计哲学
分层防御:传输加密+主机认证+用户认证
密钥优先:非对称加密保障认证安全
通道复用:单连接支持多类型会话
开放扩展:支持多种加密算法和认证方式
动手实验:

在校园服务器配置密钥认证
使用Wireshark对比SSH和Telnet流量
创建SSH隧道访问实验室数据库
SSH教会我们:真正的安全不是隐藏弱点,而是用密码学构建可靠防线。当你在凌晨三点远程调试服务器时,应该感谢SSH守护着你的每一次连接。

posted on 2025-08-04 07:29  鱼油YOU  阅读(22)  评论(0)    收藏  举报