首页/安全/安全加固速查/限制 SSH Agent 转发
口令与认证策略55 条

限制 SSH Agent 转发

Agent 转发会把私钥“能力”带到登录后的远端:远端 root 可借用转发通道登录其他主机——默认应关闭,按需精确开放。

安全加固速查安全更新于 2026-10-13

Agent 转发把什么带出去了

Agent 转发的机制是:登录到远端后,本地 ssh-agent 的套接字被转发过去,远端进程可以请求 agent 用你的私钥签名。私钥本身没被复制,但「使用私钥的能力」过去了——远端的 root 可以借此登录其他信任这把钥匙的主机,形成横向移动。

基本信息

适用平台Linux/macOS(OpenSSH)
服务端配置AllowAgentForwarding
客户端选项ssh -o ForwardAgent=yes|no
基线服务端默认关闭,按需精确开放

典型使用场景

  • 跳板机场景:确认是否需要转发,多数场景用 ProxyJump 即可替代
  • 多级跳转:历史上靠 agent 转发实现链式登录,现代做法是 ProxyJump
  • 合规核查:转发能力属于访问控制与凭据保护范围
  • 终端排查:客户端默认值不同,需要确认实际生效的设置

关闭与核查

关闭与核查
# 查看配置与最终生效值
grep -Ei 'agentforward' /etc/ssh/sshd_config
sshd -T | grep -i agentforwarding
# 关闭:在 sshd_config 中写入
# AllowAgentForwarding no

客户端侧替代方案

客户端侧替代方案
# 单次登录显式禁用转发
ssh -o ForwardAgent=no host
# 跳板链路改用 ProxyJump:认证在本地完成,不把 agent 暴露给中间机
ssh -J bastion app01
# 核查本地配置里是否默认开启
# grep -i forwardagent ~/.ssh/config

配置项读法

配置项位置含义
AllowAgentForwarding服务端是否允许本机接受 agent 转发请求
ForwardAgent客户端是否把本地 agent 转发到远端
ForwardX11客户端是否转发图形界面连接
ProxyJump客户端推荐的跳板实现方式

相关防护配套

  • 私钥口令短语:转发放大的风险在私钥本身无口令时最直接,先给私钥加口令再谈转发
  • agent 套接字权限:远程会话继承的 SSH_AUTH_SOCK 若可被其他用户读取,任何进程都能请求签名
  • 会话复用:ControlMaster 复用连接能减少重复认证需求,也就降低了转发的必要性
  • 转发范围:确需转发时按目标主机单独设置 ForwardAgent,不要在全局配置里默认打开

风险场景对照

场景风险处置
登录他人管理的机器远端 root 可借 agent 完成对其他信任主机的登录服务端关闭转发,改用 ProxyJump
私钥无口令短语钥匙被借用时无需二次验证,操作难以归属到人为私钥设置口令短语
共享跳板机多用户跳板机把凭据借用面成倍放大跳板机服务端禁用,终端侧同步关闭
自动化脚本依赖转发直接关闭会让批量任务在夜间整片失败先盘点依赖,改用专用密钥或 ProxyJump
ProxyJump 在本地完成认证转发,不把 agent 暴露给中间机,是跳板场景的推荐姿势:既能多级跳转,又不额外扩大凭据暴露面。
关闭后依赖 agent 跳转的运维脚本会失败:先盘点使用面再切换,同时检查终端侧(macOS 与部分 Windows 客户端)是否默认开启转发。
核查时以 sshd -T 的输出为准:配置文件里写着 no 但被其他包含文件覆盖的情况并不罕见,只看配置文本容易得出错误结论。
转发限制只解决凭据借用这一类路径:宿主机仍可直连其他主机,网络层隔离与访问控制仍然必需,两者是配合关系。
转发类配置要放在一起看:AllowAgentForwarding 管的是密钥使用能力,X11Forwarding 管的是图形会话转发,两者都属于凭据与数据外泄面,加固时逐项确认而不是只改一个。

易错点

  • 只关服务端不看客户端:客户端仍尝试转发,日志出现噪声且排查方向被带偏
  • 用 agent 转发替代跳板设计:凭据能力被带到中间机,横向移动路径实际被拓宽
  • 改动 sshd_config 不语法检查:sshd -t 报错后直接 reload 会导致新连接失败
  • 不盘点脚本依赖:关闭后自动化任务失败,回退又扩大了暴露面
  • agent 套接字继承被忽略:远程会话里的 SSH_AUTH_SOCK 一旦被其他用户读到即可请求签名,容器与共享主机上尤其容易发生

数据来源与参考

  • man 5 sshd_config:AllowAgentForwarding
  • CIS Benchmark:SSH 转发条目

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌