以上译自 ssh-agent 的在线手册(man)。
按我的理解来说,ssh-agent 就是一个管理私钥的代理,受管理的私钥通过 ssh-add 来添加,所有 ssh-agent 的客户端都可以共享使用这些私钥。
用处一,不用重复输入密码。
用 ssh-add 添加私钥时,如果私钥有密码的话,照例会被要求输入一次密码,在这之后 ssh-agent 可直接使用该私钥,无需再次密码认证。
用处二,不用到处部署私钥。
假设我有私钥分别可以登录同一内网的主机 A 和主机 B,出于一些原因,不能直接登录 B。我可以通过在 A 上部署私钥或者设置 PortForwarding 来登录 B,也可以转发认证代理连接在 A 上面使用 ssh-agent 管理的私钥登录 B。
以 cygwin 环境为例,描述一下操作流程
islue@localhost $ ssh-agent bash --login -i
通过 ssh-agent 启动 bash,或者说把 bash 挂到 ssh-agent 下面
islue@localhost $ ssh-add
添加私钥,如果跳过第一步直接添加私钥,也就是说当前的 shell 并没有挂在 ssh-agent 下面,则会收到这样的错误信息
Could not open a connection to your authentication agent.
接下来登录主机 A
islue@localhost $ ssh -A HOST_A
-A 的作用就是启用转发认证代理连接
islue@HOST_A $ ssh HOST_B
islue@HOST_B $
从主机 A 上顺利登录主机 B,完毕。
更多内容请参阅 ssh 和 ssh-agent 的在线手册。