컴퓨터 네트워크
[컴퓨터 네트워크] SSH, SSHD, ssh.service와 ssh.socket의 관계 및 차이점
comgu
2025. 5. 14. 20:29
반응형
SSH(Secure Shell)는 원격 서버 접속에 사용되는 프로토콜이다. 이 글에서는 SSH 관련 구성 요소인 SSH 클라이언트, SSHD, ssh.service, ssh.socket의 관계 및 차이점을 설명한다.
목차
SSH 클라이언트와 SSHD
SSH 클라이언트
- SSH 클라이언트는 사용자가 원격 서버에 접속할 때 사용하는 프로그램이다.
- 명령어 형태로는 ssh user@remote-server와 같이 사용된다.
- 클라이언트 측에서 실행되며, 연결 요청을 시작하는 역할을 한다.
- 패키지 이름은 일반적으로 openssh-client이다.
SSHD (SSH Daemon)
- SSHD는 서버 측에서 실행되는 데몬 프로세스이다.
- SSH 연결 요청을 기다리고 처리하는 역할을 한다.
- 클라이언트의 인증을 확인하고 성공 시 원격 쉘 세션을 제공한다.
- 설정 파일은 /etc/ssh/sshd_config에 위치한다.
SSH 클라이언트와 SSHD의 관계는 클라이언트-서버 관계이다. 사용자가 SSH 클라이언트를 통해 연결 요청을 보내면, 서버에서 실행 중인 SSHD가 이 요청을 받아 처리한다.
ssh.service와 ssh.socket
우분투 등 systemd를 사용하는 리눅스 시스템에서는 SSHD를 관리하는 두 가지 방식이 있다: ssh.service와 ssh.socket이다.
ssh.service
- ssh.service는 전통적인 방식의 systemd 서비스 유닛이다.
- 시스템 부팅 시 SSHD를 시작하여 항상 실행 상태로 유지한다.
- 연결 요청이 없어도 SSHD는 계속 메모리에 상주한다.
- 서비스 파일은 일반적으로 /lib/systemd/system/ssh.service에 위치한다.
ssh.socket
- ssh.socket은 systemd의 소켓 활성화 기능을 사용하는 유닛이다.
- SSH 포트(기본 22번)를 모니터링하다가 연결 요청이 있을 때만 SSHD를 시작한다.
- 일정 시간 동안 추가 연결이 없으면 SSHD는 종료된다.
- 소켓 파일은 일반적으로 /lib/systemd/system/ssh.socket에 위치한다.
- 리소스 사용을 최적화하는 "on-demand" 방식이다.
주요 차이점 및 주의사항
- 실행 방식:
- ssh.service: SSHD가 항상 실행 중이다.
- ssh.socket: 연결 요청이 있을 때만 SSHD가 실행된다.
- 성능 특성:
- ssh.service: 연결 지연이 거의 없으나 항상 리소스를 사용한다.
- ssh.socket: 첫 연결 시 약간의 지연이 발생할 수 있으나 리소스를 절약한다.
- 권장 사용 환경:
- ssh.service: 서버 환경이나 SSH 연결이 자주 발생하는 시스템에 적합하다.
- ssh.socket: 개인 컴퓨터나 간헐적으로만 SSH 접속이 필요한 시스템에 적합하다.
- 주의사항:
- ssh.service와 ssh.socket은 동시에 활성화하면 충돌이 발생하므로 둘 중 하나만 사용해야 한다.
서비스 관리 명령어
현재 서비스 상태 확인:
systemctl status ssh.service
systemctl status ssh.socket
서비스 활성화/비활성화:
sudo systemctl enable ssh.service
sudo systemctl disable ssh.socket
서비스 전환 방법:
# ssh.service에서 ssh.socket으로 전환
sudo systemctl stop ssh.service # sudo systemctl stop ssh 와 동일
sudo systemctl disable ssh.service # sudo systemctl disable ssh 와 동일
sudo systemctl enable ssh.socket
sudo systemctl start ssh.socket
SSHD 프로세스 확인:
ps aux | grep sshd
결론
SSH 연결 환경에서는 클라이언트 측의 SSH와 서버 측의 SSHD가 통신한다. 서버에서 SSHD를 관리하는 방식으로는 ssh.service와 ssh.socket 두 가지가 있으며, 사용 환경과 목적에 따라 적합한 방식을 선택하여 사용할 수 있다. 서버 환경에서는 일반적으로 항상 준비된 상태를 유지하는 ssh.service를 사용하는 것이 권장된다.
반응형