SSH-AGENT(1)

NAME
ssh-agent - 认证代理

总览 (SYNOPSIS)
ssh-agent [-a bind_address] [-c | -s] [-t life] [-d] [command [args ...]] ssh-agent [-c | -s] -k

描述 (DESCRIPTION)
ssh-agent 用来掌管公开密钥认证系统(RSA, DSA)中的私钥. 这个概念源于让 ssh-agent 在 X 会话或登录会话之初启动, 使其他窗口或程序成为 ssh-agent 的客户. 当它们用 ssh(1) 登录其他机器的时候, 可以通过环境变量找到代理程序, 并自动进行认证.

可用的选项有:

-a bind_address
    把代理和 UNIX 域 socket bind_address 绑定. 默认地址是 /tmp/ssh-XXXXXXXX/agent.<ppid>.

-c  在 stdout 上输出 C-shell 命令. 如果 SHELL 看上去象一个 csh 类型的 shell, 这个就成为默认项.

-s  在 stdout 上输出 Bourne shell 命令. 如果 SHELL 看上去不象一个 csh 类型的 shell, 这个就成为默认项.

-k  结束当前代理 (由 SSH_AGENT_PID 环境变量给出).

-t life
    设置最大生命周期的默认值, 用于加入的身份数据. 生命周期以秒为单位, 也可以用 sshd(8) 中规定的时间格式. 用 ssh-add(1) 向代理添加身份数据时, 可以指定另一个生命周期, 而不用这个默认值. 不使用这个选项时, 默认的最大生命周期是永恒.

-d  调试模式. 指定这个选项后, ssh-agent 不进行 fork.

如果给出命令行, 它将按代理的子进程运行. 命令结束时, 代理也结束.

代理最初不掌握任何私钥. 密钥通过 ssh-add(1) 加入. 不带参数运行 ssh-add(1) 时, 它添加 $HOME/.ssh/id_rsa, $HOME/.ssh/id_dsa 和 $HOME/.ssh/identity 文件的内容. 如果身份数据需要用密语访问, ssh-add(1) 将询问这个密语 (X11 下用一个小程序, 没有 X 则从终端读取), 然后把身份数据送往代理. 代理能够保存多个身份数据, 并且自动使用这些数据. ssh-add -l 命令显示出目前代理掌管的身份数据.

这个方式的设想是, 在用户的本地 PC, 笔记本计算机, 或终端上运行代理程序. 认证数据无须保存在其他任何机器上, 而认证的密语决不通过网络传递. 但是, 和代理的连接通过 SSH 远程登录被转发, 因而用户能够在网络的任何地方 安全行使与其身份一致的权利.

设置代理程序有两个主要方法: 或者让代理启动一个子命令输出某些环境变量; 或者让代理程序输出所需的 shell 命令 ( sh(1) 或 csh(1) 语法都能够产生). 之后 ssh(1) 获取这些变量, 据此和代理建立连接.

代理程序决不会在请求的通道中传送私钥, 需要私钥的操作将由代理完成, 然后把结果返回给请求者. 这样使用代理就不会把私钥暴露给客户端.

程序将创建一个 UNIX 域的 socket, 它只让当前用户访问, SSH_AUTH_SOCK 环境变量保存这个 socket 的名字. 这个方法容易被 root 用户或当前用户的 不同实例滥用.

SSH_AGENT_PID 环境变量保存着代理程序的 PID.

当在命令行上给出的命令结束时, 代理程序也就自动退出.

文件 (FILES)

$HOME/.ssh/identity
    内含用户的协议第一版的 RAS 身份数据.

$HOME/.ssh/id_dsa
    内含用户的协议第二版的 DSA 身份数据.

$HOME/.ssh/id_rsa
    内含用户的协议第二版的 RAS 身份数据.

/tmp/ssh-XXXXXXXX/agent.<ppid>
    Unix 域 socket, 包含和认证代理的连接. 这些 socket 只允许它们的拥有者读取. 代理程序退出时自动删除这些 socket.

作者 (AUTHORS)
OpenSSH 源自最初 Tatu Ylonen 发表的自由 ssh 1.2.12. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt 和 Dug Song 消除了许多 BUGS, 增加新的特征, 从而创建了 OpenSSH. Markus Friedl 贡献了对 SSH 协议1.5版和2.0版的支持.

另见 (SEE ALSO)
ssh(1), ssh-add(1), ssh-keygen(1), sshd(8)

TRANSBY
LinuxForum.Net CMPP 中文手册页计划 http://cmpp.linuxforum.net

* Sun Feb 8 2004 徐明 <xuming@users.sourceforge.net>
- 初始版本