Git服务管理之SSH(SecureShell)

来源:互联网 发布:软件危机的危害 编辑:程序博客网 时间:2024/06/06 10:56

SSH keys 是为了防止任何人随意clone 或 push 代码而产生的.
keys 有公匙和密匙,你在本地生成了密匙和公匙之后,把你的公匙告诉给服务器或者其他协作者,那么你就可以在他们的git版本库clone和push代码等操作.相对于一台服务器来说,一台协作者机器对应一个SSH keys.
具体操作如下:
在终端输入
$ ssh-keygen -t rsa -C "man@meeit.com"   (邮箱换成自己的)
然后出现
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Tekkub/.ssh/id_rsa):  (这里是输入你的SSH keys 保存的位置,不输入直接回车就是前面的默认路径)
然后出现
Enter passphrase (empty for no passphrase):  (这里要你输入口令,可以直接回车)
然后出现
Enter same passphrase again:  (重复输入口令,上面没有设置就直接回车)
然后出现
Your identification has been saved in /c/Users/Tekkub/.ssh/id_rsa.
Your public key has been saved in /c/Users/Tekkub/.ssh/id_rsa.pub. 
The key fingerprint is: e8:ae:60:8f:38:c2:98:1d:6d:84:60:8c:9e:dd:47:81 max@meeit.com
到这里,你的SSH keys 已经创建完毕,完后你到你SSH keys 保存目录里找到 id_rsa.pub 这个是保存你的公匙的文件,里面就是你的SSH keys 的公匙.


 git麻烦在用户管理及管理上,下面上三种解决办法:

# 如果需要团队里的每个人都对仓库有写权限,又不能给每个人在服务器上建立账户,那么提供 SSH 连接就是唯一的选择了。我们假设用来共享仓库的服务器已经安装了 SSH 服务,而且你通过它访问服务器。  
#   
# 有好几个办法可以让团队的每个人都有访问权。

第一个办法 是给每个人建立一个账户,直截了当但过于繁琐。反复的运行 adduser 并且给所有人设定临时密码可不是好玩的。  
#   
# 第二个办法 是在主机上建立一个 git 账户,让每个需要写权限的人发送一个 SSH 公钥,然后将其加入 git 账户的 ~/.ssh /authorized_keys 文件。这样一来,所有人都将通过 git 账户访问主机。这丝毫不会影响提交的数据——访问主机用的身份不会影响 commit的记录。  
#   
# 另一个办法 是让 SSH 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制,来进行授权。只要每个人都能获得主机的 shell 访问权,任何可用的 SSH 授权机制都能达到相同效  # 如果需要团队里的每个人都对仓库有写权限,又不能给每个人在服务器上建立账户,那么提供 SSH 连接就是唯一的选择了。我们假设用来共享仓库的服务器已经安装了 SSH 服务,而且你通过它访问服务器。  
 
#  

为了简便选用了第二种办法 ,这种办法采用SSH公钥认证。

这里为了演示建立user1 user2 两个用户分别模拟两个开发人员,
                 建立git 用户,源码是通过git 用户进行初始化,可以将 它当作项目经理
并各自修改密码

产生公钥

ssh-keygen -C "你的email地址"  -t rsa

后面直接回车直到结束,中间可以不需要任何设置,该命令将生成一对非对称的公/私密钥,默认它们被存储在: 
XP/2003用户:c:/Documents and Settings/登陆名/.ssh 
Vista用户: c:/Users/登陆名/.ssh

linux          :~/.ssh

下面分别为user1 user2 产生公钥,私钥
 

 

 

这样有/home/user1/.ssh 下会产生两个文件,id_rsa 私钥,和id_rsa.pub公钥文件

公钥样子大概如此

 

该.ssh文件夹下面,私钥放在id_rsa文件里面,不用理会它;

对于user2 ,git 用户作相同处理,然后各自的目录会生成相应的文件

 

然后需要将user1 user2 各自的公钥文件提供给git 用户,

 

 

2、在linux服务器上将公钥加到git用户的authorized_keys文件中。 
  可以参考:http://github.com/git-on-windows/rookies 
  git用户的建立及设置参考:http://progit.org/book/zh/ch4-4.html

只要把它们加入 authorized_keys 文件(译注:本例加入到了文件尾部):

 

这样认证就建好了

然后用git 用户在/home/git目录下建一个库 project_repos.git/

 

然后启运服务  /etc/init.d/git-daemon restart

当然也要启动sshd 

                 /etc/init.d/sshd start

user1 连接 (这里测试时将porject_repos.git 改为repos.git 了, 此系小节,可忽略) 

 

 

原创粉丝点击