下一个: , 上一个: Password authentication server, 上层: Password authenticated


2.9.4.2 使用有口令认证的客户

为了通过口令验证服务器远程在仓库上运行 cvs命令,需要指定 pserver 协议,可选的用户名,仓库主机,可选的端口号,仓库路径。 例如:

     cvs -d :pserver:faun.example.org:/usr/local/cvsroot checkout someproj

     CVSROOT=:pserver:bach@faun.example.org:2401/usr/local/cvsroot
     cvs checkout someproj

然而,除非你连接到公共访问仓库(比如,不需要口令的用户名),首先要提供用口令或登录 log in。 登录用仓库校验你的口令并将它保存起来。 这是通过 login 命令完成,如果在 $CVSROOT 没有提供口令,它将交互提示你输入:

     cvs -d :pserver:bach@faun.example.org:/usr/local/cvsroot login
     CVS password:

     cvs -d :pserver:bach:p4ss30rd@faun.example.org:/usr/local/cvsroot login

输入口令后,cvs 用服务器进行验证。 如果认证成功,username、host、repository 和 password 的组合被永久纪录下来,这样以后与仓库的事务就不再要求执行 cvs login 命令。 (如果认证失败,cvs 申诉口令错误,并不纪录任何信息。)

按照默认,记录存储在 $HOME/.cvspass 文件中。 它的格式是人可读的,一定程度上是人可编辑的,但注意,口令不是以明文存储的—通常经过了编码来保护它们避免被无心发现的危险(例如,被碰巧看到这个文件的系统管理员或其他人无心地看到)。

你可以用设置 CVS_PASSFILE 环境变量改变来改变该文件的默认位置。 如果使用这个变量,请确保在 cvs login 之前将其设置。 如在运行 cvs login 后将其设置,以后的 cvs 命令将无法找到口令传输给服务器。

一旦登录之后,所有的 cvs 使用该远程仓库和用户名的命令都使用保存的口令认证。 这样,如

     cvs -d :pserver:bach@faun.example.org:/usr/local/cvsroot checkout foo

将正常工作(除非服务器端更改了口令,那样你需要重新运行 cvs login)。

注意,如果在仓库规格说明中没注明 `:pserver:',cvs 会采用 rsh 来连接服务器(参阅 Connecting via rsh)。

当然,如你已经有检出一个工作副本并在里面运行过 cvs 命令,以后将不再显式指明仓库,因为 cvs 可以从工作副本的 CVS 子目录推断仓库。

使用 cvs logout 命令可以将远程仓库的口令从 CVS_PASSFILE 中删除。