网络服务 - SSH
00 分钟
2024-6-20
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 验证方式

密码验证
➡️
验证流程
  1. 客户机发送连接请求;
  1. 服务器返回服务器公钥🔑客户机
  1. 客户机发送经服务器公钥加密登录密码至服务器;
  1. 服务器使用服务器私钥 🔐解密后验证,若合法则建立连接。
验证内容
验证内容
  • 服务器端公钥
  • 客户端的用户名和密码
验证结果
验证结果
首次连接时需要验证服务器公钥
保存服务器公钥后每次连接需验证用户密码
密钥验证
➡️
验证流程
  1. 客户机发送连接请求与客户端公钥🔑服务器; :
  1. 服务器返回服务器公钥🔑客户机
  1. 服务器验证接收的客户端公钥是否为已保存公钥,若是执行下一步;
  1. 服务器发送由客户端公钥加密随机字符串至客户端;
  1. 客户机使用客户端私钥🔐解密字符串,再使用服务器公钥🔑加密发送至服务器;
  1. 服务器使用服务器私钥🔐解密并验证,若合法则建立连接。
验证内容
验证内容
  • 服务器端公钥
  • 客户端公钥
验证结果
验证结果
每次连接免密登录

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. 基本功能搭建(密码验证)

环境:(默认已安装), 设备一(服务器端)、设备二(客户端)
  • 服务端:
      1. (安装openssh软件)
      1. 配置sshd服务
      1. 启动(/重启)sshd服务
      可配置功能:
  • 客户端:
      1. Linux
      1. Windows:
      使用 XShell 等三方工具

2. 密钥验证远程登录

  • 客户端:
      1. 生成密钥对
      1. 将公钥文件上传至服务器端
      1. 客户端尝试登录服务器

3. 简易防火墙访问控制

(此 实验环境密钥验证远程登录基础上进行↓)
  • 判断查询
  • 设置黑白名单
  • 验证

D. 常见报错 & 问题

  • ssh远程登录后记得退出
  • tcp wrappers 优先查看hosts.allow,匹配即停止
上一篇
Linux 基础知识 往期汇总
下一篇
<K8S> vol. 01 - kubernetes 组件