# ssh-agent 的工作原理
简化流程:
[用户] -> ssh 命令 -> [ssh-agent] -> [私钥] -> [服务器]
- 用户运行
ssh user@host。 - SSH 客户端向 ssh-agent 请求签名(用私钥完成挑战响应)。
- ssh-agent 返回签名,完成认证。
- 私钥不会被发送到服务器;通常也不会被明文写入磁盘。
# ssh-agent 的主要命令
# 启动服务
- Linux/macOS:
eval "$(ssh-agent -s)"
- Windows(PowerShell):
Start-Service ssh-agent
# 添加私钥
ssh-add ~/.ssh/id_rsa # Linux/macOS
ssh-add C:\Users\28058\.ssh\id_rsa # Windows
- 第一次添加会要求输入私钥密码(passphrase)
- 添加后在当前 session 内通常无需再次输入密码
# 查看已加载密钥
ssh-add -l
- 显示 agent 中已缓存的公钥指纹
# 删除密钥
ssh-add -D # 删除 agent 中的所有密钥
ssh-add -d ~/.ssh/id_rsa # 删除指定密钥
# Windows 上的 ssh-agent 服务
# 4.1 服务特点
- Windows 的 ssh-agent 是一个系统服务(OpenSSH Authentication Agent)。
- 可以设置为自动启动。
Set-Service -Name ssh-agent -StartupType Automatic
- 启动后在后台运行,不用每次手动开启。
# 4.2 常见命令
- 启动服务:
Start-Service ssh-agent
- 查看服务状态:
Get-Service ssh-agent
- 添加私钥:
ssh-add C:\Users\28058\.ssh\id_rsa
- 查看已加载密钥:
ssh-add -l
# 优势
-
免密体验
- 解锁一次私钥后,在同一 session 或服务周期内通常无需重复输入 passphrase。
-
安全
- 私钥主要在本机使用,常驻内存,不会被传输到服务器。
-
支持多密钥
- 可以同时缓存多把私钥,适合管理多个服务器或 GitHub、GitLab 等不同账号。
-
与 SSH 配置结合
- 配合
~/.ssh/config可以针对不同 host 自动选择对应私钥。
- 配合
