git 계정은 깃 서버로서의 역할 외에는 해야 할 일이 없다.
만약 bash 사용 권한을 제한하지 않으면 git 계정으로 ssh에 접근하는 유저들이 서버의 파일들을 조작할 수 있어서 보안상 바람직하지 않으므로 shell 실행 권한을 제한해야 한다.
방법은 다음과 같다.
[root@centosserver ~]# sudo vi /etc/passwd
다음 명령어로 /etc/passwd 파일을 연다.
git 정보를 찾고 bash를 git-shell로 변경한다.
# 변경 전
git:x:1001:1001::/home/git:/bin/bash
# 변경 후
git:x:1001:1001::/home/git:/bin/git-shell
1001:1001은 환경에 따라 다르므로 만약 다르다면(ex 1002:1002) 그대로 두면 된다.
이후 로그인을 시도하면 git 유저의 접근이 불가능해졌다.
앞으로 새 저장소가 생길 때 root 권한으로 생성해서 git에게 소유권을 주는 방식으로 진행해야 한다.
번거롭지만 보안을 위해서 감내해야 할 부분이다.
+) 클라이언트로 깃 사용하기
먼저 useradd 사용자이름 명령어를 통해 클라이언트를 만들어준다.
이후 passwd 사용자이름 명령어를 통해 비밀번호를 설정한다.
이후 만든 클라이언트 계정으로 로그인해 깃에 사용자 등록을 한다.
$ git config --global user.name "사용자 이름"
$ git config --global user.email "사용자 이메일"
다음 두 명령어로 등록하면 된다.
(만약 failed to stat '.': Permission denied 라는 오류가 뜬다면 경로가 root 디렉터리로 되어있진 않은지 확인해보자.)
$ cd
$ mkdir .ssh
이후 키 생성을 위해 .ssh 디렉터리를 생성한다.
이후 ssh-keygen -t rsa를 입력해 키를 생성한다.
passphrase를 입력하라고 뜨는데, ssh-key를 재차 암호화할 비밀번호이다. 생략해도 무방하다.
만들어진 id_rsa.pub을 WinSCP와 같은 툴을 통해 home/git/.ssh에 옮겨준다. 이름은 git-cla_id_rsa.pub으로 변경한 뒤 옮겼다.
이후 root 계정으로 로그인해서, cat git-cla_id.rsa.pub >> authorized_keys를 입력해 클라이언트의 public 키를 authorized_keys에 append한다.
'Infra > Linux' 카테고리의 다른 글
[Linux] [remote rejected] master -> master (branch is currently checked out) 오류 (0) | 2021.11.12 |
---|---|
[Linux] 리눅스 디렉토리 구조 (0) | 2021.11.09 |