# 《WaLiSSH - AI Shell 智能终端》第1-4节:ssh连接配置库表设计

作者:小傅哥
博客:https://bugstack.cn (opens new window)
视频:https://t.zsxq.com/Wxy9K (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

# 一、本章诉求

在上一节我们做了 SSH 连接服务器的基础设施实现,并做了单测验证。那么接下来,我们要考虑把关于 SSH 的配置信息存储到数据库中,这样才能持久化的操作。

本节课程,主要完成以下内容:

  1. 理解 SSH 连接配置的业务需求,明确表结构设计的目标
  2. 掌握表拆分设计的思想,理解为什么要把配置拆成两张表
  3. 学习字段类型选择的原则,包括 varchar、tinyint、longtext 的使用场景
  4. 了解索引设计的最佳实践,包括主键、唯一索引、普通索引的作用
  5. 理解数据加密存储的方案,密码和私钥为什么要加密、怎么加密

你可以先尝试按照这样的分析进行库表设计,之后在看下文的内容。

# 二、库表关系

在开始设计表结构之前,我们先来分析一下 SSH 连接配置的业务需求。

# 2.1 需求分析

在我们上一节做案例的时候可以看到,SSH 连接配置,简单来说就是用户在 WaLiSSH 客户端中保存的服务器连接信息。主要包括以下几类信息:

基础连接信息:

  • 连接名称(如"腾讯云服务器")
  • 主机地址(如"140.143.183.225")
  • 端口号(默认 22)
  • 用户名(如"root"、"ubuntu")
  • 认证方式(密码 or 私钥)
  • 认证凭证(密码 or 私钥内容)

高级配置信息:

  • 连接超时时间(默认 10 秒)
  • 保活间隔(默认 60 秒)
  • 是否启用压缩
  • 是否严格检查主机密钥
  • 已知主机密钥列表
  • 连接后执行的启动命令

系统管理信息:

  • 用户ID(如果是公司里使用,有登录权限操作的时候,可以区分不同用户的配置)
  • 连接状态(未连接、已连接、连接中、连接失败)
  • 加密标志(标识凭证是否加密)
  • 创建时间、更新时间
  • 逻辑删除标志