Git仓库服务器SSH认证示例

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

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

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

git 客户测试机:    node1.lansgg.com    192.168.100.129

方法一 示例、

git 仓库服务器,新建仓库,测试机获取git仓库,修改,远程上传。ssh 方式
[root@Linuxidc ~]# useradd -d /opt/gitServer gitServer
[root@Linuxidc ~]# echo "git"|passwd --stdin gitServer
更改用户 gitServer 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@Linuxidc ~]# yum install git -y
[root@Linuxidc ~]# su - gitServer
[gitServer@Linuxidc ~]$ ls
[gitServer@Linuxidc ~]$ mkdir TestProject.git
[gitServer@Linuxidc ~]$ cd TestProject.git/
[gitServer@Linuxidc TestProject.git]$ git --bare init
Initialized empty Git repository in /opt/gitServer/TestProject.git/
[gitServer@Linuxidc TestProject.git]$ ls
branches  config  description  HEAD  hooks  info  objects  refs

客户测试机

[root@node1 ~]# useradd -d /opt/gitServer gitServer
[root@node1 ~]# echo "gitServer" |passwd --stdin gitServer
更改用户 gitServer 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@node1 ~]# su - gitServer
[root@node1 ~]# git clone gitServer@192.168.100.128:/opt/gitServer/TestProject.git
Initialized empty Git repository in /root/TestProject/.git/
The authenticity of host '192.168.100.128 (192.168.100.128)' can't be established.
RSA key fingerprint is 9f:32:3a:b0:db:03:b6:c8:fc:a0:47:6c:e5:d1:b0:6a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.128' (RSA) to the list of known hosts.
gitServer@192.168.100.128's password:
warning: You appear to have cloned an empty repository.
[root@node1 ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  TestProject
[root@node1 ~]# cd TestProject/
[root@node1 TestProject]# echo "test file" > test.file
[root@node1 TestProject]# git add test.file
[root@node1 TestProject]# git config --global user.name "gitServer"
[root@node1 TestProject]# git config --global user.email git@lansgg.com
[root@node1 TestProject]# git commit -m "test commit" test.file
[master 96bf273] test commit
 1 files changed, 1 insertions(+), 1 deletions(-)
[gitServer@node1 TestProject]$ git remote add test_remote_origin ssh://192.168.100.128/opt/gitServer/TestProject.git
[gitServer@node1 TestProject]$ git push test_remote_origin master
gitServer@192.168.100.128's password:
Counting objects: 5, done.
Writing objects: 100% (3/3), 252 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://192.168.100.128/opt/gitServer/TestProject.git
  7e2e4a4..96bf273  master -> master

git 仓库服务端

[gitServer@Linuxidc TestProject.git]$ git log
commit 96bf2738c6602283ea91778b999f7adf66c0082c
Author: gitServer <gitServer@lansgg.com>
Date:  Tue Sep 22 17:05:12 2015 +0800
 
    test commit

我们可以随便找个目录clone下,看看是否存在 刚刚提交的 test.file

[root@Linuxidc ~]# mkdir /opt/tt
[root@Linuxidc ~]# cd /opt/tt
[root@Linuxidc tt]# git clone gitServer@192.168.100.128:/opt/gitServer/TestProject.git
Initialized empty Git repository in /opt/tt/TestProject/.git/
The authenticity of host '192.168.100.128 (192.168.100.128)' can't be established.
RSA key fingerprint is 9f:32:3a:b0:db:03:b6:c8:fc:a0:47:6c:e5:d1:b0:6a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.128' (RSA) to the list of known hosts.
gitServer@192.168.100.128's password:
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (2/2), done.
Receiving objects: 100% (6/6), 435 bytes, done.
remote: Total 6 (delta 0), reused 0 (delta 0)
[root@Linuxidc tt]# ls
TestProject
[root@Linuxidc tt]# cd TestProject/
[root@Linuxidc TestProject]# ls
test.file
[root@Linuxidc TestProject]# cat test.file
test file abc
[root@Linuxidc TestProject]#

方法二  示例、

在测试机创建两个账户 user1 user2,分别将秘钥上传至git 仓库侧,

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a172358f5f3e31cac97258cdd7340ed2.html