LDAP 简明科普

1. 什么是 LDAP LDAP(Lightweight Directory Access Protocol) 是一种用于查询和管理目录信息的协议。 简单说: LDAP 是一个“按层级组织的用户信息数据库 + 查询方式” 2. LDAP 存什么 常见内容包括: 用户账号(用户名、ID) 密码(加密存储) 用户组(权限) 部门 / 组织结构 邮箱、电话等信息 3. 数据结构(像树) LDAP 的数据是树状结构: graph TD A[公司] --> B[技术部] A --> C[人事部] B --> D[用户A] B --> E[用户B] C --> F[用户C] 每个节点都有唯一标识(DN)。 4. LDAP 能做什么 用户登录认证(验证账号密码) 查询用户信息 管理组织结构 权限分组管理 5. 常见使用场景 公司统一账号系统 内部系统登录(单点登录基础) 权限集中管理 6. 常见实现 OpenLDAP Active Directory(微软) 7. 一句话总结 LDAP 是一个“按树组织的用户信息数据库 + 查询协议”,用于统一管理账号和组织结构

2026年4月8日 · 1 分钟

SSH、跳板机和隧道

1. SSH 是什么 SSH(Secure Shell) 是一种用于远程登录和通信的加密协议。 核心作用 远程登录服务器 执行命令 安全传输数据 建立加密通道 简单理解 就像一根“加密的远程操作线”,你在本地操作,实际在远程执行。 图示 graph LR A[本地电脑] -- SSH连接 --> B[远程服务器] A -->|输入命令| B B -->|返回结果| A 2. 跳板机(Bastion Host)是什么 跳板机是一台中间服务器,用于访问内网机器。 为什么需要 内网服务器不能直接暴露到公网 提供统一入口(安全控制、审计) 简单理解 像“门卫”,必须先经过它,才能进入内部系统。 图示 graph LR A[本地电脑] --> B[跳板机] B --> C[内网服务器] 常见连接方式 ssh -J user@跳板机 user@内网服务器 3. 隧道(SSH Tunnel)是什么 SSH 隧道是一种通过 SSH 转发网络流量的技术。 本质 把本地请求“通过 SSH 转发到远程” 3.1 本地端口转发(Local Forward) 示例 ssh -L 3307:127.0.0.1:3306 user@服务器 ...

2026年4月8日 · 1 分钟

加密体系

1. 三个核心问题 整个体系其实在解决三件事: 你是谁?(身份认证) 数据能不能被偷看?(加密传输) 如何安全地交换密钥?(密钥分发) 2. 非对称加密(公钥 / 私钥) 核心定义 使用一对密钥:公钥 + 私钥 公钥:可以公开 私钥:必须保密 二者不可互相推导 两种用途(关键区分) ① 加密通信 graph LR A[发送方] -->|公钥加密| B[密文] B --> C[接收方] C -->|私钥解密| D[明文] ② 身份认证(SSH) sequenceDiagram participant A as 客户端(私钥) participant B as 服务器(公钥) B->>A: challenge A->>B: signature B->>B: 公钥验证 B->>A: 通过/拒绝 关键公式 signature = Sign(私钥, challenge) Verify(公钥, challenge, signature) = true 本质总结 私钥负责“生成证明”,公钥负责“验证证明” 3. SSH:基于签名的认证机制 文件结构 ~/.ssh/id_ed25519 # 私钥 ~/.ssh/id_ed25519.pub # 公钥 ~/.ssh/authorized_keys # 服务器保存公钥 免密登录本质 服务器信任“某个公钥”,允许对应私钥登录 ...

2026年4月8日 · 2 分钟

集群常用脚本

多重执行xcall.sh #!/bin/bash # 遍历所有节点(集群主机列表) for i in cdhmaster01 cdhmaster02 cdhmaster03 cdhnode01 cdhnode02 cdhnode03 do # 打印当前正在操作的主机,方便区分输出 echo "--------- $i ----------" # 通过 ssh 在远程主机执行传入的命令 # "$*" 表示把所有参数当作一个整体传过去 # 例如:./xcall.sh pwd # 实际执行:ssh cdhmaster01 "pwd" ssh $i "$*" done 集群分发xsync.sh #!/bin/bash if [ $# -eq 0 ]; then echo "Usage: $0 [more files_or_dirs]" exit 1 fi hosts=(cdhmaster01 cdhmaster02 cdhmaster03 cdhnode01 cdhnode02 cdhnode03) user=$(whoami) for src in "$@" do if [ ! -e "$src" ]; then echo "Not found: $src" continue fi abs_src=$(readlink -f "$src") name=$(basename "$abs_src") parent=$(dirname "$abs_src") for host in "${hosts[@]}" do echo "===== $host =====" ssh "$host" "mkdir -p '$parent'" if [ -d "$abs_src" ]; then rsync -av "$abs_src" "$user@$host:$parent/" else rsync -av "$abs_src" "$user@$host:$parent/" fi done done

2026年4月2日 · 1 分钟

restful风格

一、什么是 REST ?(一种软件架构风格) 缩写:REST (不是"rest"这个单词) 外文名:Representational State Transfer,简称REST。 中文名:表现层状态转移。 提出时间:2000年。 属性:一种软件架构风格。(以Web为平台的。web服务的架构风格,前后端接口时候用到。) REST之所以晦涩难懂,是因为前面主语(Resource )被去掉了。 全称是: Resource Representational State Transfer。 通俗来讲就是:资源在网络中以某种表现形式进行状态转移。 分解开来讲解: Resource:资源,即数据(这是网络的核心); Representational:某种表现形式,比如用JSON,XML,JPEG等; State Transfer:状态变化。通过HTTP的动词(get查询、post新增、put修改、delete删除)实现。 一句话描述 REST 实质: URL 中只使用名词来定位资源,用 HTTP 协议里的动词(GET、POST、PUT、DELETE)来实现资源的增删改查操作。 什么意思呢? 比如,我们有一个 friends 接口,对于 “朋友” 我们有增删改查四种操作,怎么定义 REST 接口? 增加一个朋友,uri: generalcode.cn/v1/friends 接口类型:POST 删除一个朋友,uri: generalcode.cn/va/friends 接口类型:DELETE(在 http 的 parameter 指定好友 id) 修改一个朋友,uri: generalcode.cn/va/friends 接口类型:PUT(在 http 的 parameter 指定好友 id) 查找一个朋友,uri: generalcode.cn/va/friends 接口类型:GET 上面我们定义的四个接口就是符合 REST 协议的,请注意,这几个接口都没有动词,只有名词 friends,都是通过 Http 请求的接口类型来判断是什么业务操作。 举个反例: generalcode.cn/va/deleteFriends 该接口用来表示删除朋友,这就是不符合REST协议的接口。 不能用deleteFriends ,而应该就用friends + http请求的delete方式。 ...

2024年4月13日 · 1 分钟

IDEA常用操作

IDEA(IntelliJ IDEA)是业界公认的最好开发工具之一,当然好不好也因人而异,也不要刻意去争谁强谁弱,高手往往不在乎手中的兵器是什么的。个人而言,更高效的工具适合每个开发人员,在编写代码的时候花的时间少,就有更多的时间去设计… 目录 [toc] 一、概述 IDEA(IntelliJ IDEA)是业界公认的最好开发工具之一,当然好不好也因人而异,也不要刻意去争谁强谁弱,高手往往不在乎手中的兵器是什么的。个人而言,更高效的工具适合每个开发人员,在编写代码的时候花的时间少,就有更多的时间去设计代码,当然,使用一个陌生的 IDE,效率肯定是比不上自己熟练的 IDE 的,所以为了节省诸君的学习成本,也为了更快地去接纳和熟练 IDEA,所以周末之余,故作此文。—- 一品江南 准备 所有的电脑软件都有着相同的 UI 框架、菜单结构,对于每一个开发人员来说,基本的文件操作、项目操作、工作空间操作不成问题,不会讲到。 涉及的其他工具(Maven、Git 等)不会详细讲,只会讲到如何操作,想要深入学习,关注其他博文。 二、配置 在安装软件(JDK、Maven、Git、IDEA)搭建好环境后,要对 IDEA 进行一番配置,才能开始开发,每个人都有每个人的配置习惯,可以自己研究自己喜欢的配置,进入 IDEA 的配置 File | Settings(Ctrl+Alt+S)开始配置。 选择菜单或设置步骤使用 “|” 分开,后面操作一样 1. 主题与行为 选择自己喜欢的主题:Appearance & Behavior | Appearance | Theme 配置骚气的背景图片:Appearance & Behavior | Appearance | UI Options | Background Image… 在配置中选择合适的窗口选项:Appearance & Behavior | Appearance | Window Options Animate windows:关闭动画效果 Show memory indicator:显示内存使用情况 Show tool window bars:关闭工具栏显示,按两次Alt键可以显示 Small labels in editor tabs:编辑器显示小标签 配置自己想看到的菜单项和工具栏:Appearance & Behavior | Menus and Toolbars ...

2024年3月2日 · 8 分钟

Git配置SSH密钥

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net 初次安装 gitgit 需要配置用户名和邮箱,否则 git 会提示:please tell me who you are. 你需要运行命令来配置你的用户名和邮箱: $ git config –global user.name “liuhanxia” $ git config –global user.email “liuhanxia@51faguanggao.com” 注意:(引号内请输入你自己设置的名字,和你自己的邮箱)此用户名和邮箱是 git 提交代码时用来显示你身份和联系方式的,并不是 github 用户名和邮箱 git 使用 ssh 密钥 git 支持 https 和 git 两种传输协议,github 分享链接时会有两种协议可选:git 协议链接图例、https 协议链接图例 git 使用 https 协议,每次 pull, push 都会提示要输入密码, 使用 git 协议,然后使用 ssh 密钥,这样免去每次都输密码的麻烦 初次使用 git 的用户要使用 git 协议大概需要三个步骤: 一、生成密钥对 二、设置远程仓库(本文以 github 为例)上的公钥 三、把 git 的 remote url 修改为 git 协议(以上两个步骤初次设置过以后,以后使用都不需要再次设置,此步骤视以后项目的 remote url 而定,如果以后其他项目的协议为 https 则需要此步骤) ...

2024年2月17日 · 2 分钟

Git命令行

本地仓库链接远程仓库 git remote add origin <server>git@github.com:yourName/yourRepo.git 创建一个叫做“feature_x”的分支,并切换过去 git checkout -b feature_x 再把新建的分支删掉: git branch -d feature_x 预览差异: git diff <source_branch> <target_branch> 创建一个叫做 1.0.0 的标签: git tag 1.0.0 1b2e1d63ff 想commit自动来提交本地修改,我们可以使用-a标识 git commit -a -m "Changed some files" git commit 命令的-a选项可将所有被修改或者已删除的且已经被git管理的文档提交到仓库中 千万注意,-a不会造成新文件被提交,只能修改。 内建的图形化 git: gitk 彩色的 git 输出: git config color.ui true 使用git gui创建sshkey及查看: 命令行创建ssh key: ssh-keygen -t rsa -C "your_email@youremail.com" 后面的your_email@youremail.com改为你在github上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。 验证是否成功,在git bash下输入: ssh -T git@github.com 如果要查看指定文件的修改记录可以使用 git blame 命令,格式如下: git blame <file> ...

2024年2月3日 · 1 分钟

Git服务器搭建

上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,2019 年开始 Github 私有存储库也可以无限制使用。 这当然我们也可以自己搭建一台 Git 服务器作为私有仓库使用。 接下来我们将以 Centos 为例搭建 Git 服务器。 1、安装Git $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git 接下来我们 创建一个git用户组和用户,用来运行git服务: $ groupadd git $ useradd git -g git 2、创建证书登录 收集所有需要登录的用户的公钥,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。 如果没有该文件创建它: $ cd /home/git/ $ mkdir .ssh $ chmod 755 .ssh $ touch .ssh/authorized_keys $ chmod 644 .ssh/authorized_keys 3、初始化Git仓库 首先我们选定一个目录作为Git仓库,假定是/home/gitrepo/runoob.git,在/home/gitrepo目录下输入命令: $ cd /home $ mkdir gitrepo $ chown git:git gitrepo/ $ cd gitrepo $ git init --bare runoob.git Initialized empty Git repository in /home/gitrepo/runoob.git/ 以上命令Git创建一个空仓库,服务器上的Git仓库通常都以.git结尾。然后,把仓库所属用户改为git: ...

2024年1月20日 · 1 分钟

模块地狱

个人理解: 有点类似依赖冲突,循环依赖 传递性依赖 遮蔽 版本冲突 复杂的类加载

2023年12月10日 · 1 分钟