Created
Jun 14, 2024 12:45 PM
Tags
SSH 服务
(一)服务原理
SSH 简介
Secure Shell,即安全的壳。SSH 协议是一个应用层协议,通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。
SSH 最常用的场景是远程登录和文件传输。
在 SSH 协议出现之前,Telnet 广泛应用于远程登录场景、FTP 是最常用的文件传输协议,但它们都存在相同的问题——明文传输数据带来的安全隐患。SSH 采用加密传输数据、提升认证强度等手段,克服了 Telnet 和 FTP 应用中的安全性问题,实现了安全的远程登录和文件传输业务。
SSH 由服务器和客户端组成,为建立安全的 SSH 通道,双方需要先建立 TCP 连接,然后协商使用的版本号和各类算法,并生成相同的会话密钥用于后续的对称加密。在完成用户认证后,双方即可建立会话进行数据交互。
OpenSSH 是 SSH 协议的免费开源实现。
对称加密 & 非对称加密
- 对称加密
- 本质:加密密钥、解密密钥使用
同一套密钥
- 优点:维护一种密钥、加密解密
速度快
- 不足:密钥管理困难
- 非对称加密
- 本质:
公钥
加密、私钥
解密
公钥加密的密文只能通过对应的私钥进行解密。通过公钥推理出私钥的可能性微乎其微
SSH 验证方式
密码验证
验证流程
- 客户机发送连接请求;
- 服务器返回服务器公钥🔑至客户机;
- 客户机发送经服务器公钥加密的
登录密码
至服务器;
- 服务器使用服务器私钥 🔐解密后验证,若合法则建立连接。
验证内容
- 服务器端公钥
- 客户端的用户名和密码
验证结果
首次连接时需要验证
服务器公钥
;保存服务器公钥后每次连接需验证
用户密码
。密钥验证
验证流程
- 客户机发送连接请求与客户端公钥🔑至服务器; :
- 服务器返回服务器公钥🔑至客户机;
- 服务器验证接收的客户端公钥是否为已保存公钥,若是执行下一步;
- 服务器发送由客户端公钥加密的
随机字符串
至客户端;
- 客户机使用客户端私钥🔐解密字符串,再使用服务器公钥🔑加密发送至服务器;
- 服务器使用服务器私钥🔐解密并验证,若合法则建立连接。
验证内容
- 服务器端公钥
- 客户端公钥
验证结果
每次连接免密登录
SCP 命令
- SCP:secure copy, 基于 ssh 的、进行安全的文件拷贝
- 用于Linux下进行安全的文件复制
- 加密传输、速度较慢
- 不占用资源
- 不提高系统负荷
格式:
SFTP 命令
- SFTP:Secure FileTransferProtocol,安全的文件传送协议
- 是SSH服务的一部分,依附SSH服务、没有单独的进程
- 用于Linux下进行文件传输,采用加密技术、但传输效率较低
格式:
TCP WRAPPERS
- 工作在
第四层
的安全工具,对有状态连接服务进行安全监测和访问控制
- 类似
简易防火墙
、设置访问控制列表(ACL)
- 编写/etc/hosts.allow、/etc/hosts.deny规则进行控制,控制哪些IP可以访问该TCP服务
- 访问请求:过
防火墙
– 过Selinux
– 过TCP wrapper
B. SSH服务参数
C. SSH服务远程登录
1. 基本功能搭建(密码验证)
环境:(默认已安装), 设备一(服务器端)、设备二(客户端)
- 服务端:
- (安装openssh软件)
- 配置sshd服务
- 启动(/重启)sshd服务
可配置功能:
- 客户端:
- Linux
- Windows:
使用
XShell
等三方工具2. 密钥验证远程登录
- 客户端:
- 生成密钥对
- 将公钥文件上传至服务器端
- 客户端尝试登录服务器
3. 简易防火墙访问控制
(此 实验环境 在
密钥验证远程登录
基础上进行↓)- 判断查询
- 设置黑白名单
- 验证
D. 常见报错 & 问题
- ssh远程登录后记得退出
- tcp wrappers 优先查看hosts.allow,匹配即停止