GitHub를 개인 버전 제어 시스템으로 원격 버전 라이브러리 개인화

2735 단어

목적


나는 모든 서버의 설정 파일을git로 관리하여 설정 변경 상황을 기록할 수 있도록 하려고 한다.그런데 문제는 어떻게 여러 사람이 협업할 수 있느냐는 것이다.서버 설정 정보가 매우 민감해서 이 버전 라이브러리가 누설되면 전체 회사의 서버 구조가 철저히 누설된다.이 버전 라이브러리는 개발자의 로컬 컴퓨터에서만 복호화할 수 있으며, 원격 위탁 관리 버전 라이브러리의 서버는 파일 안의 내용을 알지 말아야 한다.
그러면 해결 방법은 로컬git 버전 라이브러리는 복호화되어 업로드 과정에서 내용이 모두 암호화되고 키는 로컬에 저장되며 키는 다른 개발자에게 공유될 수 있다.

몇 가지 해결 방안을 고려했습니다.

  • git-crypt: 일부 파일을 암호화할 수 있는데 원리는 암호화된fiter와diff를 추가한 것이다. 그러나 정부는 일부 파일만 암호화하고 전체 버전 라이브러리 암호화에는 적합하지 않다고 말한다.일부 파일 암호화는 정보 유출을 초래하기 쉬우므로 반드시 전 버전 라이브러리 암호화가 적합하다.
  • 직렬sshfs 및 원격 서버 암호화 파일 시스템encfs: 먼저 sshfs으로 원격 파일 시스템을 불러오고 encfs으로 암호화 파일 시스템을 만듭니다.여러 명이 동시push 상황에서의 경쟁 조건을 해결할 수 없을 것 같고 encfs에 보안 결함이 있어 사용 push/pull 전에 두 개의 파일 시스템을 불러와야 하기 때문에 불편하다.
  • git-remote-gcrypt용gpg으로 원격 암호화.내가 예상한 모델에 비교적 부합되지만 gpg 사용하는 것은 특별히 협업하기 편리하지 않다.그러나 다른 방법은 통하지 않고 오직 이 방법만 사용할 수 있다.

  • 사용 방법


    git-remote-gcrypt와gnupg 설치
    sudo apt-get install git-remote-gcrypt gnupg

    gpg의 키를 만들고,
    사용자 이름, 메일박스, 설명 등을 설정해야 하며, 만료 시간을 설정하지 마십시오.
    gpg --gen-key

    생성된 키의 ID를 기록하고,
    예를 들어 2048R/liberxue013 안의 liberxue013048은 암호화 바퀴 수를 대표하기 때문에 많을수록 쉽게 풀지 못한다
    gpg --list-keys

    테스트 버전 라이브러리 생성
    mkdir test1 && cd test1
    git init .
    echo "test" > a.txt
    git add . && git ci -m "update"

    테스트 프로젝트 만들기
    github 위에 프로젝트를 만듭니다. 예를 들면:https://github.com/liberxue
    원격 암호화 버전 라이브러리 구성
    git remote add cryptremote gcrypt::[email protected]:liberxue/liberxue.git

    어떤 키로 암호화할지 지정하는 게 좋을 것 같아요.
    이렇게 하면 이 키를 공유해서 다른 사람한테 쓸 수 있어요.
    git config remote.cryptremote.gcrypt-participants "liberxue013"

    push - 원거리
    git push cryptremote master
  • 원격 버전 라이브러리에 방문하여 파일 내용과commit 안의 정보를 보십시오. 모두 암호화된 것입니까?

  • 어떻게 다른 사람에게 공유합니까


    키 내보내기
    gpg --export-secret-key -a "[email protected]" > secretkey.asc
  • secretkey를.asc는 다른 사람에게 공유하고 복사할 때 압축하고 암호화한 다음에 보내는 것을 잊지 마세요
  • 다른 사람 컴퓨터에서 가져오기
    gpg --import secretkey.asc

    코드 다운로드
    git clone gcrypt::[email protected]:liberxue/liberxue.git test2 // test2 git clone  
     

    어떤 키로 암호화할지 정해야 돼요.
    git config remote.cryptremote.gcrypt-participants "liberxue013"
    

    이런 방법으로 git은밀하고 협업이 필요한 정보(예를 들어 서버 설정)를 관리할 수 있고github를 은밀한 버전 제어 시스템으로 사용할 수 있다(commit 메시지는 명문이다).

    좋은 웹페이지 즐겨찾기