Git: SSH协议服务器

SSH协议语法格式

对于拥有壳登录权限的用户账号,可以用下面的语法访问Git版本库:

语法1:SSH://[& lt; username> @] & lt; server> [: & lt; port>]/home/xxx/repo1。git
语法2:[& lt; username> @] & lt; server>:/home/xxx/repo1。git

注意:,
SSH协议地址格式可以使用两种不同的写法,第一种是使用SSH://开头的标准的SSH协议URL写法,第二种是SCP格式的写法. SSH协议标准的URL写法稍嫌复杂,但是对于非标准SSH端口(非22)可以直接在URL中给出端口号。
& lt; username>,是服务器& lt; server>上的用户账号,如果省略用户名,则会使用当前登录用户的用户名(配置和使用了主机别名的除外)。
& lt; port>,为SSH协议端口,默认为22。当使用了非默认端口时,最好使用语法1。当然使用语法2也可以实现,但是要通过~/sh/config配置文件设置主机别名。
路径/home/xxx/repo1.git是服务器中版本库的绝对路径。若用相对路径则是相对于用户名用户的家目录。
如果采用口令认证,必须在每次连接时输入口令。
如果采用公钥认证,则不用输入口令。

服务器架设方式比较

SSH协议有两种方式来实现git服务第。一种是用标准的SSH账号访问版本库。即用户账号可以直接登录到服务器获得壳。对于这种使用标准SSH账号的方式,直接使用标准的SSH服务就可以了。
第二种实现方式是所有用户都使用同一个专用的SSH账号访问版本库,访问时通过公钥认证的方式,虽然所有用户用同一个账号访问,但可以通过在建立连接时所用的不同公钥来区分不同的用户身份.Gitolite就是实现该方式的服务器软件。
标准SSH账号和专用SSH账号这两种实现方式的区别:


标准SSHGitolite账号每个用户一个账号所有用户公用同一个账号认证方式口令或公钥认证公钥认证登录到shell是否安全性差好管理员需要外壳是否版本库路径相对路径或绝对路径相对路径授权方式操作系统中用户组和目录权限通过配置文件授权分支写授权否Gitolite路径写授权否Gitolite假设难易度简单复杂

实际上,标准SSH也可以用公钥认证的方式实现使用用户公用同一个账号,不过这类似于把一个公共账号的登录口令同时告诉给多个人。具体操作如下:
1只,,在服务器端创建一个公共账号,例如点火线圈。
2只,,管理员收集需要访问git服务的用户公钥。如user1.pub, user2。酒吧。
3只,,使用ssh-copy-id命令将各个git用户的公钥远程加入服务器的公钥认证列表中。
,,,,,,3.1只,,远程操作,可以使用ssh-copy-id命令。
,,,,,,,,,,,,,,,,ssh-copy-id我user1美元。酒吧sparker@server
,,,,,,,,,,,,,,,,美元ssh-copy-id -我user2。酒吧sparker@server
,,,,,,3.2只,,如果直接在服务器上操作,则直接将文件追加到authorized_keys文件中。
,,,,,,,,,,,,,,,,猫user1美元。酒吧在祝辞~点火线圈/sh/authorized_keys
,,,,,,,,,,,,,,,,美元猫user2。酒吧在祝辞~点火线圈/sh/authorized_keys
4只,,在服务器端的点火线圈用户主目录下建立git库,就可以实现多个用户利用同一个系统账号(点火线圈)访问git服务了。

这样做除了不必逐一设置账号,以及用户无须口令认证之外,标准SSH部署git服务的缺点一个也不少,而且因为无法区分用户,也就无法针对用户进行授权。

SSH公钥认证

为实现公钥认证,作为认证的客户端一方需要拥有两个文件,即公钥/私钥对。一般情况下,公/私钥钥对文件创建在用户家目录下的. SSH目录中。如果用户家目录中不存在. SSH目录,说明SSH公/私钥钥对尚未创建。可以用下面的命令创建:

<>之前,美元SSH - keygen

该命令会在用户家目录下创建. SSH目录,并在其中创建两个文件:
1只,,id_rsa
私钥文件,它是基于RSA算法创建的,一定要妥善保管不要泄露。
2只,id_rsa。酒吧
公钥文件,和id_rsa文件是一对儿,该文件作为公钥文件可以公开。
创建了自己的公/私钥钥对以后,就可以使用下面的命令,实现无口令登录远程服务器(即用公钥认证取代口令认证)。

<>之前,美元ssh-copy-id 小姐;. SSH/id_rsa.pub  & lt; user> @

注意:
该命令会提示用户输入用户在服务器上的SSH登录口令。
此命令执行成功后,再以用户用户用SSH命令登录服务器远程主机时,不必输入口令即可直接登录。
该命令实际上是将. SSH/id_rsa。酒吧公钥文件追加到远程主机为r的用户家目录下的. ssh/authorized_keys文件中。
检查公钥认证是否生效,通过ssh命令连接远程主机,正常的话应该直接登录成功。如果要求输入口令则表明公钥认证配置存在问题。如果ssh登录存在问题,可以通过查看服务器端的/var/log/auth.日志文件进行诊断。

Git: SSH协议服务器