Linux命令-ssh-add(添加密钥到 ssh-agent)

📅 2026/8/10 10:53:50
Linux命令-ssh-add(添加密钥到 ssh-agent)
Linux命令-ssh-add添加密钥到 ssh-agent快速参考基本用法查看与列出密钥删除密钥锁定与解锁 agent密钥生命周期管理与 ssh-agent 协同工作实用场景常见问题排查ssh-add用于将 SSH 私钥添加到ssh-agent的认证缓存中。一旦添加后续的 SSH 连接将自动使用缓存的密钥进行认证无需反复输入密码这在使用密码保护passphrase-protected的密钥时尤为方便。快速参考ssh-add[选项][密钥文件]安全提示ssh-add依赖ssh-agent运行。如果 agent 未启动需先执行eval $(ssh-agent)。基本用法# 添加默认密钥~/.ssh/id_rsa, id_ecdsa, id_ed25519 等ssh-add# 添加指定密钥文件ssh-add ~/.ssh/my_custom_key# 添加密钥并设置生命周期300 秒后自动移除ssh-add-t300~/.ssh/temp_key# 添加密钥并要求每次使用确认ssh-add-c~/.ssh/important_key# 添加密钥并设置最大使用次数ssh-add-T5~/.ssh/limited_key查看与列出密钥# 列出已加载的密钥指纹ssh-add-l# 列出公钥参数可复制到 authorized_keysssh-add-L# 查看详细信息默认情况的输出格式ssh-add-l-v# 查看密钥类型和位数ssh-add-l-Emd5 ssh-add-l-Esha256删除密钥# 删除指定密钥ssh-add-d~/.ssh/id_rsa# 删除所有已加载的密钥ssh-add-D# 删除单个密钥并确认ssh-add-d~/.ssh/stale_keyecho密钥已移除锁定与解锁 agent# 锁定 agent禁止使用已添加的密钥ssh-add-x# Enter lock password:# Agent locked.# 解锁 agentssh-add-X# Enter lock password:# Agent unlocked.# 场景离开工作站时锁定回来后解锁aliaslockagentssh-add -xaliasunlockagentssh-add -X密钥生命周期管理# 添加密钥1 小时后自动过期ssh-add-t3600~/.ssh/id_ed25519# 验证过期时间ssh-add-l-v# 在脚本中自动添加密钥需提前配置免密ssh-add ~/.ssh/deploy_key2/dev/null||{echo请输入密钥密码:ssh-add ~/.ssh/deploy_key}# 添加所有 .ssh 目录下的密钥forkeyin~/.ssh/id_*;doif[[$key!*.pub]];thenssh-add$key2/dev/nullfidone# 检查 agent 状态并自动添加密钥if!ssh-add-l/dev/null21;thenechoAgent 中无密钥正在添加...ssh-addfi与 ssh-agent 协同工作# 启动 ssh-agent 并添加密钥完整流程eval$(ssh-agent)ssh-add ~/.ssh/id_ed25519# 确认密钥已添加ssh-add-l# 测试免密登录sshuserremote_host# 结束会话时清理ssh-add-Dssh-agent-k# 一行启动 agent 并添加密钥eval$(ssh-agent-s)ssh-add# 使用 keychain 工具持久化管理需安装 keychain# keychain ~/.ssh/id_ed25519# source ~/.keychain/$(hostname)-sh实用场景# 场景 1: Git 多账户密钥管理ssh-add ~/.ssh/id_ed25519_personal ssh-add ~/.ssh/id_ed25519_work# 验证多密钥ssh-add-l|wc-l# 输出: 2# 场景 2: 临时部署密钥ssh-add-t600~/.ssh/deploy_temp_key# 10 分钟后自动过期适合 CI/CD 流水线# 场景 3: 跳板机密钥转发# 本地执行ssh-add ~/.ssh/jump_host_keyssh-Auserjumphost# -A 启用 SSH Agent 转发跳板机上可用本地密钥# 场景 4: 查看所有密钥的 SHA256 指纹ssh-add-l-Esha256# 场景 5: 导出公钥到剪贴板ssh-add-L|head-1|clip.exe# Windowsssh-add-L|head-1|pbcopy# macOSssh-add-L|head-1|xclip# Linux# 场景 6: 刷新过期密钥ifssh-add-l21|grep-qThe agent has no identities;thenssh-addfi常见问题排查# 问题 1: Could not open a connection to your authentication agent# 解决先启动 ssh-agenteval$(ssh-agent)# 问题 2: Permissions XXXX for private.key are too open# 解决修改文件权限chmod600~/.ssh/id_ed25519# 问题 3: 密钥权限问题批量修复chmod700~/.sshchmod600~/.ssh/id_*chmod644~/.ssh/*.pubchmod644~/.ssh/known_hostschmod644~/.ssh/config# 问题 4: 在 tmux/screen 中断开重连后 agent 丢失# 使用 .bashrc 自动恢复# 添加到 ~/.bashrc:exportSSH_AUTH_SOCK$(find/tmp/ssh-*-nameagent.*-user$USER2/dev/null|head-1)ssh-add是 SSH 密钥管理的核心工具。结合ssh-agent它提供了安全又便捷的密钥管理机制让密码保护与免密登录兼得。