编辑: kieth | 2014-10-14 |
>
~anonymous/.ssh/authorized_keys $ cat /path/to/user2.pub >
>
~anonymous/.ssh/authorized_keys ? 在服务器端的 anonymous 用户主目录下建立 git 库,就可以实现多个用户利用同一个系统帐号 访问 git 服务了. ? 这样做除了免除了逐一设置帐号,以及用户无需口令认证之外,标准 SSH 部署 git 服务的缺点 一个也不少,而且因为用户之间无法区分,更无法进行针对用户授权. Amlogic Application Notes Amlogic Confidential 8/41 2.6 SSH 公钥认证 关于公钥认证的原理,维基百科上的这个条目是一个很好的起点: http://en.wikipedia.org/wiki/Public-key_cryptography . ? 如果你的主目录下没有.ssh 目录,说明你的 SSH 公钥/私钥对尚未创建.可以用此命令创建: $ ssh-keygen ? 该命令会在用户主目录下创建.ssh 目录,并在其中创建两个文件: id_rsa 私钥文件,是基于 RSA 算法创建的,要妥善保管,不要泄漏. id_rsa.pub 公钥文件,私钥文件是一对,可以公开. ? 创建了自己的公钥/私钥对后,就可以使用下面的命令,实现无口令登录远程服务器,即用公 钥认证取代口令认证: $ ssh-copy-id -i .ssh/id_rsa.pub user@server ? 该命令会提示输入用户 user 在server 上的 SSH 登录口令. ? 当此命令执行成功后,再以 user 用户登录 server 远程主机时,不必输入口令直接登录. ? 该命令实际上将.ssh/id_rsa.pub 公钥文件追加到远程主机 server 的user 主目录下 的.ssh/authorized_keys 文件中. ? 检查公钥认证是否生效,运行 SSH 到远程主机,正常的话应该直接登录成功.如果要求输 入口令则表明公钥认证配置存在问题.如果 SSH 服务存在问题,可以通过查看服务器端的 /var/log/auth.log 进行诊断. Amlogic Application Notes Amlogic Confidential 9/41 2.7 SSH 主机别名 在实际应用中,有时需要使用多套公钥/私钥对,例如: ? 使用缺省的公钥访问 git 帐号,获取 shell,进行管理员维护工作. ? 使用单独创建的公钥访问 git 帐号,执行 git 命令. ? 访问 github(免费的 git 服务托管商)采用其他公钥. SSH 主机别名的创建步骤: ? 创建指定名称的公钥/私钥对呢,还是用 ssh-keygen 命令: $ ssh-keygen -f ~/.ssh/ ? 将替换为有意义的名称. ? 会在~/.ssh 目录下创建指定的公钥/私钥对.文件是私钥,文件 .pub 是公钥. ? 将新生成的公钥添加到远程主机的.ssh/authorized_keys 文件中,建立新的公钥认证: $ ssh-copy-id -i .ssh/.pub user@server ? 这样,就有两个公钥用于登录主机 server. ? 当执行下面的 ssh 登录指令,认证时用到的是缺省公钥~/.ssh/id_rsa.pub: $ ssh user@server ? SSH 的客户端配置文件~/.ssh/config 可以通过创建主机别名,使用特定的公钥: host bj user git hostname bj.ossxp.com port
22 identityfile ~/.ssh/jiangxin ? 当执行下面的任意一条命令时,认证时用到的是新建的公钥/.ssh/jiangxin.pub: $ ssh bj $ git clone bj:path/to/repo.git ? 登录的 SSH 主机为 bj.ossxp.com. ? 登录时使用的用户名为 git. Amlogic Application Notes Amlogic Confidential 10/41 3. 什么是 Gitolite Gitolite 是一款 Perl 语言开发的 git 服务管理工具,通过公钥对用户进行认证,并能够通过配置 文件对写操作进行基于分支和路径的的精细授权.Gito........