카테고리 없음

ssh 다중접속 환경 세팅

해달's code 2025. 11. 16. 18:07

문제 : 같은 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가 제대로 뜨면 완료