git ssh 서버 잠금

git ssh 서버 잠금

프로젝트에 대한 단일 SSH 계정을 사용하여 SSH를 통해 git 서버를 설정하고 싶습니다. 모든 프로젝트 구성원은 Authorized_keys에 나열된 SSH 키를 가지고 있어야 합니다. 잠금은 git 작업만 수행하고 전용 디렉터리 내부에서만 액세스하도록 제한해야 합니다.

그러한 설정을 만드는 가장 좋은 방법은 무엇입니까? 분명히 git 명령만 수행하여 잠금을 수행할 수 있는 git-shell이 ​​있지만 단일 디렉토리에 대한 액세스를 제한하는 방법을 찾을 수 없습니다. 다양한 Python 및 Ruby 래퍼도 있습니다. 이 중 어느 것을 신뢰해야 합니까?

답변1

너는 좀 볼 수 있었어.자증또는기톨라이트, gitolite는 리포지토리에 대한 액세스 권한 부여 등의 측면에서 더 낫습니다. 사용자에게 서버에 대한 액세스 권한을 부여하는 것에 대해 걱정할 필요가 없습니다.

답변2

귀하의 위협 모델은 무엇입니까?

좋은 사람이 실수로 git 저장소나 기타 데이터를 파괴했습니다.사용자가 homedir, tmp 및 git 저장소에만 쓸 수 있는지 확인하세요. 커밋할 때마다 저장소를 백업하고 정기적으로 복구 절차를 연습하세요.

나쁜 사람이 다른 사람의 개인 키를 훔쳐 시스템을 소유하려고 합니다.공격 표면은 인증으로 보호되는 sshd 부분과 사용하는 쉘 인터페이스로 제한되므로 가능한 한 작게 만드십시오. Python/Ruby 래퍼에는 많은 코드가 포함되어 있으며 오류가 발생할 여지가 많습니다. git-shell을 사용하거나 sshd_config의 Match 및 ChrootDirectory 지시문을 사용하여 사용자가 액세스할 수 있는 파일 시스템 부분을 제한하는 것을 고려하세요.

나쁜 사람이 누군가의 개인 키를 훔쳐 소스 코드를 얻습니다.사용자에게 개인 키를 보호하는 방법을 가르치고 키를 빠르게 취소하기 위한 절차를 수립합니다(예: 키 취소를 위해 오전 4시에 누구에게 전화해야 하는지).

를 사용하지 말고 .ssh/authorized_keys대신 AuthorizedKeyfilesshd_config의 키워드를 사용하여 사용자에게 쓰기 권한이 없는 경로를 지정하세요(예: ) /etc/ssh/keys/%u. 사용자가 .ssh/authorized_keys를 자신의 복사본으로 덮어쓰지 못하도록 하는 것은 너무 어렵습니다.

또한 감사를 허용하려면 사용자 키 파일과 sshd_config의 버전 제어를 유지하세요.

관련 정보