前端之家收集整理的这篇文章主要介绍了
Git : SSH 协议服务器,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
登录权限的用户账号,可以用下面的语法访问 Git 版本库:
@][:]/home/xxx/repo1.git@]:/home/xxx/repo1.git
是服务器 上的用户账号,如果省略用户名,则会使用当前登录用户的用户名(配置和使用了主机别名的除外)。 为SSH 协议端口,默认为 22。当使用了非默认端口时,最好使用语法1。当然使用语法2也可以实现,但是要通过 ~/.ssh/config 配置文件设置主机别名。绝对路径。若用相对路径则是相对于 username 用户的家目录。
用户账号可以直接登录到服务器获得 shell。对于这种使用标准 SSH 账号的方式,直接使用标准的 SSH 服务就可以了。用户都使用同一个专用的 SSH 账号访问版本库,访问时通过公钥认证的方式。虽然所有用户用同一个账号访问,但可以通过在建立连接时所用的不同公钥来区分不同的用户身份。Gitolite 就是实现该方式的服务器软件。
</tr>
<tr>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">账号</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">每个用户一个账号</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">所有用户公用同一个账号</td>
</tr>
<tr>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">认证方式</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">口令或公钥认证</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">公钥认证</td>
</tr>
<tr>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">登录到 shell</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">是</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">否</td>
</tr>
<tr>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">安全性</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">差</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">好</td>
</tr>
<tr>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">管理员需要 shell</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">是</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">否</td>
</tr>
<tr>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">版本库路径</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">相对路径或绝对路径</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">相对路径</td>
</tr>
<tr>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">授权方式</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">操作系统中用户组和目录权限</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">通过配置文件授权</td>
</tr>
<tr>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">分支写授权</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">否</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">Gitolite</td>
</tr>
<tr>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">路径写授权</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">否</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">Gitolite</td>
</tr>
<tr>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">假设难易度</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">简单</td>
<td><span style="font-family: Microsoft YaHei; font-size: 15px">复杂</td>
</tr>
用户公用同一个账号,不过这类似于把一个公共账号的登录口令同时告诉给多个人。具体操作如下:管理员收集需要访问git服务的用户公钥。如 user1.pub,user2.pub。用户的公钥远程加入服务器的公钥认证列表中。文件追加到 authorized_keys文件中。> ~sparker/.ssh/authorized_keys> ~sparker/.ssh/authorized_keys用户主目录下建立 git 库,就可以实现多个用户利用同一个系统账号(sparker)访问 git 服务了。
用户无须口令认证之外,标准 SSH 部署 git 服务的缺点一个也不少,而且因为无法区分用户,也就无法针对用户进行授权。
文件,即公钥/私钥对。一般情况下,公钥/私钥对文件创建在用户家目录下的 .ssh 目录中。如果用户家目录中不存在 .ssh 目录,说明 SSH 公钥/私钥对尚未创建。可以用下面的命令创建:
$
用户家目录下创建 .ssh 目录,并在其中创建两个文件:文件,它是基于 RSA 算法创建的,一定要妥善保管不要泄露。文件,和 id_rsa 文件是一对儿,该文件作为公钥文件可以公开。登录远程服务器 (即用公钥认证取代口令认证)。
$ @
提示用户输入 user 在 server 上的 SSH 登录口令。用户用 ssh 命令登录 server 远程主机时,不必输入口令即可直接登录。文件追加到远程主机 serve r的 user 家目录下的 .ssh/authorized_keys 文件中。登录成功。如果要求输入口令则表明公钥认证配置存在问题。如果 SSH 登录存在问题,可以通过查看服务器端的 /var/log/auth.log 文件进行诊断。
登录。获取 shell,登录后可以对 Git 服务器软件进行升级、维护等操作。
用户可能拥有不止一套公钥/私钥对。为了创建不同的公钥/私钥对,在使用 ssh-keygen 命令时就需要通过-f参数指定不同的私钥名称。具体用法如下:
$
替换为有意义的名称。命令执行完毕后,会在 ~/.ssh 目录下创建指定的公钥/私钥对:文件 是私钥,文件 .pub 是公钥。
生成的公钥添加到远程主机登录用户家目录下的 .ssh/authorized_keys 文件中,就可以使用新创建的公钥建立到远程主机 的 账户的无口令登录。操作如下:
$ .pub @
用户存在多个公钥/私钥对,那么当执行下面的 ssh 登录命令时,用到的是哪个公钥呢?
$ @
配置文件 ~/.ssh/config可以通过创建主机别名,在连接主机时选择使用特定的公钥。例如 ~/.ssh/config 文件中的下列配置:
后执行下面的 SSH 登录命令:
$
$ git clone abc:/home/abc/repo1.git
文件中建立的主机别名,可以做出如下判断:登录的SSH主机名为 abc.xxx.com。登录时使用的用户名为 git。文件为 ~/.ssh/abc.pub。
原文链接:https://www.f2er.com/ssh/71409.html