SSH Agent 转发配置与安全指南

在日常开发和运维工作中,我们经常需要通过多台跳板机 SSH 到内网服务器。每次都需要在每台机器上配置密钥或者输入密码,非常麻烦。SSH Agent 转发(Agent Forwarding)正是解决这一问题的利器。 什么是 SSH Agent SSH Agent 是一个后台运行的程序(守护进程),它负责管理用户的私钥。当你使用 SSH 连接服务器时,SSH Agent 会自动提供私钥进行认证,无需每次都输入密码或指定密钥文件。 核心组件 ssh-agent:后台守护进程,启动后会在环境变量中设置 SSH_AUTH_SOCK ssh-add:用于将私钥添加到 agent 管理列表 工作原理 1 2 [本地主机] ----SSH 隧道----> [跳板机] ----SSH----> [目标服务器] (持有私钥) (转发请求) (验证签名) 当启用 Agent Forwarding 后,跳板机会作为代理,将服务器的认证请求转发回本地主机,由本地的 SSH Agent 完成签名验证。 配置步骤 第一步:启动 SSH Agent 1 2 3 4 5 6 # 启动 ssh-agent $ ssh-agent -s # 输出示例: # SSH_AUTH_SOCK=/tmp/ssh-XXXX/agent.259996; export SSH_AUTH_SOCK; # SSH_AGENT_PID=260133; export SSH_AGENT_PID; 第二步:添加私钥 1 2 3 4 5 6 7 # 将私钥添加到 agent $ ssh-add ~/....

May 3, 2026 · 3 min · 黑豆子

SSH 证书认证实战指南

SSH 证书认证是一种比传统公钥认证更安全的方案。本文介绍 SSH 证书的工作原理和配置方法。 传统公钥认证的问题 传统的 SSH 公钥认证需要在每台服务器上添加用户的公钥: 1 2 # 用户将公钥发送到服务器 ssh-copy-id user@server 这种方式在大规模环境中存在以下问题: 密钥管理困难:新增或撤销用户需要手动更新所有服务器 无时效性:公钥永久有效,离职后难以撤销 无法追踪:无法知道谁在什么时候登录过 扩展性差:成百上千台服务器时维护成本极高 SSH 证书认证的原理 SSH 证书认证引入**证书颁发机构(CA)**的概念: CA 密钥:管理员创建一个 CA 私钥,用于签发证书 用户证书:CA 使用私钥对用户公钥进行签名,生成证书 服务器信任 CA:服务器只需配置信任 CA 公钥,无需逐个添加用户公钥 证书验证:用户登录时提交证书,服务器通过 CA 公钥验证证书有效性 证书包含的信息 用户公钥 用户 ID(Key ID) 有效期(起始时间 + 结束时间) 允许的登录用户名(Principals) CA 签名 创建 SSH CA 首先创建 CA 密钥对。建议使用 ED25519 算法: 1 2 3 4 5 # 创建用户证书CA ssh-keygen -t ed25519 -f ~/.ssh/user_ca -C "SSH User CA" # 创建主机证书CA(可选,用于验证服务器身份) ssh-keygen -t ed25519 -f ~/....

April 29, 2026 · 3 min · 黑豆子

Ed25519 密钥算法详解

Ed25519 是一种基于 EdDSA(Edwards-curve Digital Signature Algorithm)的数字签名算法,使用 Curve25519 椭圆曲线的变形 Ed25519。相比传统的 RSA 和 ECDSA,Ed25519 在安全性、性能和易用性上都有显著优势,已成为现代密码学的首选签名算法之一。 Ed25519 的核心优势 1. 密钥体积小 Ed25519 的密钥非常紧凑,公钥仅 32 字节,私钥 32 字节(种子)。这相比 RSA 2048 的 256 字节公钥和 1700+ 字节的私钥,存储和传输成本大幅降低。 公钥长度对比: 1 2 3 Ed25519 公钥: 82 字节(Base64 编码后) RSA 2048 公钥: 382 字节(Base64 编码后) ECDSA P-256 公钥: 162 字节(Base64 编码后) 2. 签名速度快 Ed25519 的签名和验证速度都非常快。其设计充分利用了现代 CPU 的特性,比 ECDSA 快约 3-5 倍,比 RSA 快得多。 3. 安全性高 128 位安全强度:等效于 RSA 3072 位或 AES-128 抗侧信道攻击:实现设计避免了时序攻击等侧信道风险 确定性签名:不需要随机数生成器,避免了 ECDSA 的随机数重用漏洞 4....

April 12, 2026 · 3 min · 黑豆子

SSH 配置文件详解

每次 SSH 连接都要输入一长串参数?~/.ssh/config 配置文件可以简化连接命令,还能统一管理多个主机的配置。 配置文件位置 SSH 客户端配置按以下顺序读取(后读取的优先级更高): /etc/ssh/ssh_config — 系统全局配置 ~/.ssh/config — 用户个人配置 用户配置会覆盖全局配置中的同名选项。 基本语法 配置文件由多个 Host 块组成,每个块定义一组主机的配置: 1 2 3 4 5 6 Host 别名 选项1 值1 选项2 值2 Host 另一个别名 选项1 值1 注意:每行的缩进使用空格(通常 4 个空格或 1 个 Tab),不是必须但推荐。 常用配置选项 选项 说明 示例 HostName 实际主机名或 IP HostName 192.168.1.100 User 登录用户名 User admin Port SSH 端口 Port 2222 IdentityFile 指定私钥文件 IdentityFile ~/.ssh/id_ed25519 PreferredAuthentications 首选认证方式 PreferredAuthentications publickey ServerAliveInterval 心跳间隔秒数 ServerAliveInterval 60 ServerAliveCountMax 心跳失败次数上限 ServerAliveCountMax 3 ProxyJump 跳板机 ProxyJump bastion 实战示例 简化连接命令 不使用配置文件:...

April 6, 2026 · 2 min · 黑豆子

SSH 密钥认证配置指南

详细讲解 SSH 密钥认证的完整配置流程,包括密钥生成、公钥部署、配置优化等步骤。

April 4, 2026 · 1 min · 黑豆子

SSH ProxyJump:跳板机配置最佳实践

详解 SSH ProxyJump 跳板机配置,包括命令行用法、SSH Config 配置、与 ProxyCommand 的对比。

April 2, 2026 · 2 min · 黑豆子

SSH 配置会话保持连接

介绍如何配置 SSH 客户端和服务端的 keepalive 机制,防止 SSH 会话因空闲而断开。

April 1, 2026 · 1 min · 黑豆子

SSH 密钥类型选择与格式转换

SSH 密钥认证比密码认证更安全、更方便。但面对多种密钥类型,应该如何选择?本文聚焦这个问题。 常见密钥类型对比 类型 密钥长度 安全性 性能 兼容性 ed25519 256位 极高 最快 OpenSSH 6.5+ rsa 4096位 高 较慢 广泛兼容 ecdsa 521位 高 快 较好 推荐:优先选择 Ed25519 Ed25519 是目前最推荐的 SSH 密钥类型: 安全性高:基于椭圆曲线,256位密钥相当于 RSA 3072位 性能优秀:签名和验证速度都很快 密钥简短:私钥仅 411 字节,公钥仅 98 字节 生成 Ed25519 密钥 1 ssh-keygen -t ed25519 -C "your_email@example.com" 输出示例: 1 2 3 4 5 Generating public/private ed25519 key pair. Your identification has been saved in test_key_ed25519 Your public key has been saved in test_key_ed25519....

March 26, 2026 · 1 min · 黑豆子

SSH 隧道实战:端口转发完全指南

SSH 隧道(SSH Tunneling)是 SSH 协议最强大的功能之一,通过端口转发实现安全的网络通信。本文聚焦 SSH 隧道的三种模式,每个命令都可直接使用。 本地端口转发(Local Forward) 将远程服务的端口映射到本地,适合访问内网服务。 基本语法 1 ssh -L [本地地址:]本地端口:目标主机:目标端口 跳板机用户@跳板机地址 实战案例:访问内网数据库 场景:跳板机 192.168.1.100 可访问内网数据库 10.0.0.50:3306 1 2 3 4 5 # 将远程 MySQL 映射到本地 3307 ssh -L 3307:10.0.0.50:3306 user@192.168.1.100 # 然后本地连接 mysql -h 127.0.0.1 -P 3307 -u dbuser -p 绑定特定接口 1 2 3 4 5 # 仅本机访问(默认) ssh -L 3307:10.0.0.50:3306 user@192.168.1.100 # 允许其他机器访问(注意安全风险) ssh -L 0.0.0.0:3307:10.0.0.50:3306 user@192.168.1.100 后台运行 1 2 3 4 5 # -f 后台运行,-N 不执行远程命令 ssh -fNL 3307:10....

March 25, 2026 · 2 min · 黑豆子

SSH 安全加固完全指南:从基础到高级配置

SSH(Secure Shell)是系统管理员最常用的远程访问协议,也是攻击者的首要目标。本文详细介绍 SSH 安全加固的各个层面,从基础配置到高级技巧,帮助你构建坚不可摧的 SSH 防线。 一、SSH 基础安全配置 sshd_config 核心配置 配置文件路径:/etc/ssh/sshd_config 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 # 禁用 root 登录 PermitRootLogin no # 禁用密码认证(强制密钥认证) PasswordAuthentication no PubkeyAuthentication yes # 禁用空密码 PermitEmptyPasswords no # 禁用 PAM(可选,提高安全性但可能影响某些认证方式) UsePAM no # 限制登录用户 AllowUsers admin deploy@192.168.1.0/24 # 或使用组 AllowGroups ssh-users # 设置登录超时(秒) LoginGraceTime 60 # 最大认证尝试次数 MaxAuthTries 3 # 限制会话数 MaxSessions 10 # 限制启动会话数(防止资源耗尽) MaxStartups 10:30:100 # 格式: start:rate:full # start: 开始拒绝前的未认证连接数 # rate: 拒绝概率增长速率 # full: 完全拒绝的连接数 修改默认端口 1 2 3 4 5 6 7 8 9 10 11 12 # 不要使用默认的 22 端口 Port 2222 # 或使用多个端口(便于过渡) Port 22 Port 2222 # 记得更新防火墙规则 ufw allow 2222/tcp # 或 firewall-cmd --add-port=2222/tcp --permanent firewall-cmd --reload 完整的安全配置示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 # /etc/ssh/sshd_config 安全加固版 # 网络设置 Port 2222 AddressFamily inet ListenAddress 0....

March 24, 2026 · 10 min · 黑豆子