ssh-agent
SSH 认证代理,在内存中保存解密后的私钥,避免重复输入密钥密码
语法
eval $(ssh-agent -s) ssh-add [keyfile]
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
-s |
生成 Bourne shell 命令输出 | eval $(ssh-agent -s) |
常用 |
-k |
终止当前 agent 进程 | ssh-agent -k |
常用 |
-t |
设置密钥在 agent 中的生存时间 | ssh-add -t 3600 ~/.ssh/id_ed25519 |
进阶 |
-A ForwardAgent |
SSH 连接时转发 agent(配置文件中) | ssh -A user@host |
进阶 |
-l |
列出 agent 中已加载的密钥 | ssh-add -l |
常用 |
示例
启动 agent 并添加密钥
eval $(ssh-agent -s) ssh-add ~/.ssh/id_ed25519
输入一次密码后,后续 SSH 操作不再需要密码
查看已加载的密钥
ssh-add -l
列出 agent 中所有已加载的密钥指纹
设置密钥有效期
ssh-add -t 7200 ~/.ssh/id_ed25519
密钥在 agent 中保留 2 小时后自动移除
转发 agent 到远程服务器
ssh -A user@bastion-host
在跳板机上可以使用本地的密钥继续连接其他服务器
常见错误
Could not open a connection to your authentication agent
agent 未启动,执行 eval $(ssh-agent -s) 启动
The agent has no identities
agent 中没有密钥,用 ssh-add 添加私钥
技巧
- 在 ~/.bashrc 或 ~/.zshrc 中添加 eval $(ssh-agent -s) 实现开机自动启动
- Agent 转发(-A)有安全风险,只在信任的服务器上使用
- macOS 用户可以用 ssh-add --apple-use-keychain 将密码存入钥匙串