🧩 BE
home

서비스 배포를 위한 서버 설정

Date
2025/05/27
Category
Linux
Tag
Basic
Detail
서비스를 배포하기 위한 추가적인 네트워크 설정이 필요하다. 일단 초기에 github actions로 배포 자동화 예정이기에, github actions에서 홈서버로 접속하기 위한 SSH 공개키/비공개키 관리를 해줘야한다.
SSH 공개키(공개키/비공개키 쌍)는 보통 배포(접속)할 로컬 개발PC 또는 GitHub Actions 환경에서 생성하고, 생성된 공개키(.pub 파일)를 서버의 ~/.ssh/authorized_keys에 등록한다.

공개키 생성

ssh-keygen -t ed25519 -C "deploy@lp-server"
PowerShell
복사
이런식으로 설정했다.
기존엔 RSA 방법을 많이 썼는데, ed25519가 더 보안성과 성능면에서 더 좋다고 해서 이 방법을 썼다. 자세한건 아래 참고.
이런식으로 뜨는데 그냥 다 엔터 눌러줬다.
Generating public/private ed25519 key pair. Enter file in which to save the key (/Users/<username>/.ssh/id_ed25519): [여기에 경로를 입력하거나 엔터] Enter passphrase (empty for no passphrase): Enter same passphrase again:
PowerShell
복사

서버에 키 등록

키를 생성하면 다음과 같은 경로에 각각 비공개/공개 키가 생성된다.
비공개키: ~/.ssh/id_ed25519
공개키: ~/.ssh/id_ed25519.pub
이제 여기서 공개키는 ~/.ssh/authorized_keys 에 등록하고 chmod 600 ~/.ssh/authorized_keys 로 600 권한을 준다.
비공개키는 로컬 PC나 github actions에서 서버 SSH 접속할 때 쓰기 때문에, 외부 유출 안되게 잘 저장해두면 된다. 난 맥북이라 ~/.ssh/lp-private-key로 저장해뒀다

배포 계정 생성

배포 관련 권한만을 주고 관리하기 위한 배포용 계정을 하나 만들어준다.
sudo adduser lpdeploy
PowerShell
복사
빌드, 배포 시 관리자 권한이 필요할 경우, 아래 명령어로 관리자용 계정으로 만들어준다. 편의를 위해서 아래 설정은 해주기로 했다.
sudo usermod -aG sudo deploy
PowerShell
복사
다음은 위의 설명대로 .ssh 디렉토리를 생성해주고, 700 권한을 준다. authroized_keys에 등록 후 600 권한을 주면 끝!

접속 방식 수정

이제 보안적인 부분을 개선해보자. 이전에는 유저별로 접속 시에, 비밀번호를 사용해서 접속했지만, 공개/비공개 키 쌍을 만든 지금은 키 인증으로 접속하는게 보안상 더 안전하다.
우선 ssh 설정 파일을 열어서 내부 파라미터를 수정한다.
sudo vim /etc/ssh/sshd_config
PowerShell
복사
PasswordAuthentication no KbdInteractiveAuthentication no UsePAM no PubkeyAuthentication yes PermitRootLogin no
PowerShell
복사
주석을 해제하고 이정도로 설정해주면 되는데, 각각의 기능은 다음과 같다.
PasswordAuthentication no : 비밀번호 로그인 비활성화
KbdInteractiveAuthentication no : 챌린지 응답 인증 비활성화
UsePAM no : PAM(Pluggable Authentication Modules) 사용 안 함 (선택)
PubkeyAuthentication yes : 공개키 인증만 허용
PermitRootLogin no : root로 직접 ssh 접속 막기 (권장)
이렇게 설정 후, sudo systemctl restart ssh 명령어로 sshd를 재시작 해주고, 다시 접속 시도를 해보면?
패스워드로 접속이 너무나 잘 되는 것을 확인할 수 있다..!
설정 모두 제대로 했는데, 왜 이런지 점검해 봤더니,
/etc/ssh/sshd_config.d/ 아래에 별도 설정 파일이 있는 경우에는 여기 설정이 우선 적용될 수 있다고 한다. 최신 Ubuntu에서 도입된거고, 실제로 확인해봤더니
PasswordAuthentication이 yes로 설정되어 있음을 확인할 수 있었다.
그대로 파일 열어서 no로 변경해주고
다시 접속을 시도해보니,
접속 시도가 정상적으로 막히는 것을 확인할 수 있었다.
이제 만들어둔 비공캐키로 접속을 시도해보면?