git 웨어하우스 서버 SSH 인증 예

8748 단어 gitsshclone
git는 사용자 관리 및 관리에 있어 다음과 같은 세 가지 해결 방법을 제공합니다.
만약 팀의 모든 사람이 창고에 쓰기 권한이 있고 서버에 계정을 만들 수 없다면 SSH 연결을 제공하는 것이 유일한 선택이다.우리는 창고를 공유하는 서버에 SSH 서비스가 설치되어 있고 이를 통해 서버에 접근한다고 가정합니다.팀의 모든 사람이 방문권을 가질 수 있는 여러 가지 방법이 있다.
첫 번째 방법은 모든 사람에게 계좌를 만들어 주는 것이다. 단도직입적이지만 너무 번거롭다.adduser를 반복적으로 실행하고 모든 사람에게 임시 비밀번호를 설정하는 것은 재미없다.두 번째 방법은 호스트에 git 계정을 만들어서 쓰기 권한이 필요한 모든 사람에게 SSH 키를 보내고 git 계정의 ~/에 가입하는 것이다.ssh/authorized_keys 파일.이렇게 되면 모두git 계정을 통해 호스트에 접근할 것입니다.이것은 제출한 데이터에 조금도 영향을 주지 않는다. 호스트에 접근하는 신분은commit의 기록에 영향을 주지 않는다.또 다른 방법은 SSH 서버가 어떤 LDAP 서비스나 이미 설정된 집중 권한 수여 메커니즘을 통해 권한을 부여하는 것이다.모든 사람이 호스트의 셸 접근권을 얻을 수 있다면 사용할 수 있는 SSH 권한 수여 메커니즘은 모두 같은 효과를 얻을 수 있다. #팀의 모든 사람이 창고에 대한 쓰기 권한이 필요하고 서버에 계정을 만들 수 없다면 SSH 연결을 제공하는 것이 유일한 선택이다.우리는 창고를 공유하는 서버에 SSH 서비스가 설치되어 있고 이를 통해 서버에 접근한다고 가정합니다.   
git 공유 창고 서버: Aries.lansgg.com 192.168.100.128
git 클라이언트 테스트기:node1.lansgg.com    192.168.100.129
방법 1 예제,
git 창고 서버, 새 창고, 테스트기 획득git 창고, 수정, 원격 업로드.ssh 방식
[root@Aries ~]# useradd -d /opt/gitServer gitServer
[root@Aries ~]# echo "git"|passwd --stdin gitServer
  gitServer   。
passwd:  。
[root@Aries ~]# yum install git -y
[root@Aries ~]# su - gitServer
[gitServer@Aries ~]$ ls
[gitServer@Aries ~]$ mkdir TestProject.git
[gitServer@Aries ~]$ cd TestProject.git/
[gitServer@Aries TestProject.git]$ git --bare init
Initialized empty Git repository in /opt/gitServer/TestProject.git/
[gitServer@Aries 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 [email protected]:/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.
[email protected]'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 [email protected]
[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
[email protected]'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@Aries TestProject.git]$ git log
commit 96bf2738c6602283ea91778b999f7adf66c0082c
Author: gitServer <[email protected]>
Date:   Tue Sep 22 17:05:12 2015 +0800

    test commit

우리는 방금 제출한 테스트가 있는지 디렉터리clone을 찾아서 볼 수 있습니다.file
[root@Aries ~]# mkdir /opt/tt
[root@Aries ~]# cd /opt/tt
[root@Aries tt]# git clone [email protected]:/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.
[email protected]'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@Aries tt]# ls
TestProject
[root@Aries tt]# cd TestProject/
[root@Aries TestProject]# ls
test.file
[root@Aries TestProject]# cat test.file 
test file abc
[root@Aries TestProject]#

방법 2 예제,
테스트기에서 두 개의 계정을 만듭니다.user1user2는 각각git 창고 측에 비밀 키를 업로드합니다.
[root@node1 ~]# useradd -d /opt/user1 user1
[root@node1 ~]# echo "user1" |passwd --stdin user1
  user1   。
passwd:  。
[root@node1 ~]# useradd -d /opt/user2 user2
[root@node1 ~]# echo "user2" |passwd --stdin user2
  user2   。
passwd:  。
[root@node1 ~]#
[root@node1 ~]# su - user1
[user1@node1 ~]$ ssh-keygen -t rsa
[root@node1 ~]# su - user2
[user1@node1 ~]$ ssh-keygen -t rsa

각각user1,user2 사용자의 공개 키를git 창고 서버 옆에 추가합니다
[user2@node1 .ssh]$ pwd
/opt/user2/.ssh
[user2@node1 .ssh]$ ll
  8
-rw-------. 1 user2 user2 1671 9   22 17:18 id_rsa
-rw-r--r--. 1 user2 user2  404 9   22 17:18 id_rsa.pub
[user2@node1 .ssh]$ cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp0Im8iL7UR2b0PWrJ98YY/nqvjnuYWNc2F52SYn1/WA8rwGBWW0WBmKMoyW8YfSpCVk7QbyhX48Y3KF/Gf16CWRMm8xuyA+S5Seq3ZGnLbbVhb0OMO8VDAldovnIuPdI6005+ux/WbG1FKr3WxGs5k92ZO9hbXxpcVAwpvHY47t1v2LH5fW2jThypWMolUdp9TaNy7FkD2zaUNhbdqM1w67OSydiHAMfj183sEso9TykiXJvwlJeLdUMFywPTwfVqu2rxV0lY68B2mwr1pl5mcGPA4/0ruX8vSFsFLev8+yi7LjccChAu/suPIFGLqRXrkW8ymsN/l3CkldnS9Y0BQ== [email protected]
[user2@node1 .ssh]$

git 창고 서비스 측
[gitServer@Aries ~]$ mkdir .ssh && chmod 700 .ssh
[gitServer@Aries ~]$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
[gitServer@Aries ~]$ cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1pII1U64N/wl1OXotWdcU8d8+ad0q6tkqdBgXLcR5zqXIq9PPe1NeLJ5HS9UIvZeN/LEyXGYh+fyg8tFQ+2PN3CmxnVwwcciyl1AKAgTeKUdleh8qcXPZkI0YZBpgTbuYWYHNjA6Qd9cvJSdKe9cVvwsv7N1z17Mx1uIfNSuSZ9e4XqUsJksBAzAYEGar4S13+Y/il7lquwkrdVBiWfWHmf/WoeY2RnzNBe9YtPVFUPL8HEoYyYaU+YXXMZKOZ8JwuLu1CPDJHTquSTyqdEwmgJWDdoiipgtyVOEVGZC0CqV16M2YpVqw26rrZ+nXUQYEnTrWyIiqt8/xvzmeDIf0Q== [email protected]
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp0Im8iL7UR2b0PWrJ98YY/nqvjnuYWNc2F52SYn1/WA8rwGBWW0WBmKMoyW8YfSpCVk7QbyhX48Y3KF/Gf16CWRMm8xuyA+S5Seq3ZGnLbbVhb0OMO8VDAldovnIuPdI6005+ux/WbG1FKr3WxGs5k92ZO9hbXxpcVAwpvHY47t1v2LH5fW2jThypWMolUdp9TaNy7FkD2zaUNhbdqM1w67OSydiHAMfj183sEso9TykiXJvwlJeLdUMFywPTwfVqu2rxV0lY68B2mwr1pl5mcGPA4/0ruX8vSFsFLev8+yi7LjccChAu/suPIFGLqRXrkW8ymsN/l3CkldnS9Y0BQ== [email protected]
[gitServer@Aries ~]$

사용자 이름, 암호가 필요 없는 클라이언트 테스트기
[user1@node1 ~]$ git clone [email protected]:/opt/gitServer/TestProject.git
Initialized empty Git repository in /opt/user1/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.
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 9 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (9/9), done.
[user1@node1 ~]$

제출 프로세스: 다음과 같은 오류가 표시됩니다.
Counting objects: 3, done.
Writing objects: 100% (3/3), 247 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.

다음 구성을
[git@JumpServer1 pl.git]$ cat .git/config 
[receive]
    denyCurrentBranch = ignore

다시 제출

좋은 웹페이지 즐겨찾기