문제 : 같은 ssh 계정환경에 여러명이 접속하고 작업을 한뒤 git에 올리면 한사람의 계정으로 계속 로그가 찍히는 현상
문제 원인 : ~/.gitconfig에 설정된 global 설정의 user.name과 user.email때문에 한 계정으로 업로드 되고 있는 상황
문제 해결 : ssh 접속할 때 각 계정으로 user.name과 user.email이 세팅되도록 변경
1. 서버 전체(Global Git 설정) 설정을 삭제
파일 경로 : /home/svuser/.gitconfig
[user]
name = 깃 닉네임
email = 깃 이메일
해당 내용 삭제
2. 각각 사용자들의 ssh키 생성
ssh-keygen -t ed25519 -C "A@example.com"
3. 키를 ssh 설정에 추가 후 저장
/home/svuser/.ssh/authorized_keys경로로 이동후 파일 수정
형식 : environment="<환경변수들>" ssh-ed25519 <키값> <comment>
- GIT_AUTHOR_NAME
- GIT_AUTHOR_EMAIL
- GIT_COMMITTER_NAME
- GIT_COMMITTER_EMAIL
environment="GIT_AUTHOR_NAME=TeamA",environment="GIT_AUTHOR_EMAIL=a@example.com" ssh-ed25519 AAAA...A
environment="GIT_AUTHOR_NAME=TeamB",environment="GIT_AUTHOR_EMAIL=b@example.com" ssh-ed25519 AAAA...B
4. /etc/ssh/sshd_config 파일에서 PermitUserEnvironment 설정 변경
/etc/ssh/sshd_config 경로로 이동후 sshd_config 내부 설정중에 PermitUserEnvironment를 no에서 yes로 변경
이 설정이 no일 경우에 environment= 이 설정값이 안불러와짐
5. 권한 설정 확인
.ssh 폴더와 authorized_keys 파일의 권한을 확인
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
6. ssh 접속시 환경변수를 못 읽는 문제 해결
cursor나 vscode 또는 몇몇 터미널은 ssh접속시 non-login shell로 접속하여 환경변수를 받지 못하는 문제가 생김
이 문제를 해결 하기 위해 ssh로컬이 아닌 각 로컬 컴퓨터의 SSH 클라이언트 설정(~/.ssh/config) 파일의 설정에 추가를 해줘야 bash 로그인쉘로 접속하도록 강제 할 수 있다.
Host sv
HostName 2jej.kr
Port 1217
LocalForward 3307 127.0.0.1:3306
LocalForward 5433 127.0.0.1:5432
User svuser
ServerAliveInterval 60
ServerAliveCountMax 3
ForwardAgent yes
현재 config 설정에 2줄을 추가
RequestTTY yes
RemoteCommand bash -l
7. ssh 재 시작후 깃 사용자 변경 확인
sudo systemctl restart ssh로 ssh 재시작
exit로 완전 나간 후 재접속
echo $GIT_AUTHOR_NAME
echo $GIT_AUTHOR_EMAIL
echo $GIT_COMMITTER_NAME
echo $GIT_COMMITTER_EMAIL
설정이 제대로 들어갔는지 환경변수 확인
git var GIT_AUTHOR_IDENT
지금 깃이 어떤 author를 사용하고 있는지 확인
예상 : 닉네임 <이메일> ㅇㅇㅇㅇ +ㅇㅇㅇ
각 환경 변수와 author가 제대로 뜨면 완료