GitHub를 개인 버전 제어 시스템으로 원격 버전 라이브러리 개인화
목적
나는 모든 서버의 설정 파일을git로 관리하여 설정 변경 상황을 기록할 수 있도록 하려고 한다.그런데 문제는 어떻게 여러 사람이 협업할 수 있느냐는 것이다.서버 설정 정보가 매우 민감해서 이 버전 라이브러리가 누설되면 전체 회사의 서버 구조가 철저히 누설된다.이 버전 라이브러리는 개발자의 로컬 컴퓨터에서만 복호화할 수 있으며, 원격 위탁 관리 버전 라이브러리의 서버는 파일 안의 내용을 알지 말아야 한다.
그러면 해결 방법은 로컬git 버전 라이브러리는 복호화되어 업로드 과정에서 내용이 모두 암호화되고 키는 로컬에 저장되며 키는 다른 개발자에게 공유될 수 있다.
몇 가지 해결 방안을 고려했습니다.
git-crypt
: 일부 파일을 암호화할 수 있는데 원리는 암호화된fiter와diff를 추가한 것이다. 그러나 정부는 일부 파일만 암호화하고 전체 버전 라이브러리 암호화에는 적합하지 않다고 말한다.일부 파일 암호화는 정보 유출을 초래하기 쉬우므로 반드시 전 버전 라이브러리 암호화가 적합하다.sshfs
및 원격 서버 암호화 파일 시스템encfs
: 먼저 sshfs
으로 원격 파일 시스템을 불러오고 encfs
으로 암호화 파일 시스템을 만듭니다.여러 명이 동시push
상황에서의 경쟁 조건을 해결할 수 없을 것 같고 encfs에 보안 결함이 있어 사용 push/pull
전에 두 개의 파일 시스템을 불러와야 하기 때문에 불편하다.git-remote-gcryp
t용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
어떻게 다른 사람에게 공유합니까
키 내보내기
gpg --export-secret-key -a "[email protected]" > 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 메시지는 명문이다).
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.