컴퓨터 네트워크

[컴퓨터 네트워크] 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.servicessh.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" 방식이다.

주요 차이점 및 주의사항

  1. 실행 방식:
    • ssh.service: SSHD가 항상 실행 중이다.
    • ssh.socket: 연결 요청이 있을 때만 SSHD가 실행된다.
  2. 성능 특성:
    • ssh.service: 연결 지연이 거의 없으나 항상 리소스를 사용한다.
    • ssh.socket: 첫 연결 시 약간의 지연이 발생할 수 있으나 리소스를 절약한다.
  3. 권장 사용 환경:
    • ssh.service: 서버 환경이나 SSH 연결이 자주 발생하는 시스템에 적합하다.
    • ssh.socket: 개인 컴퓨터나 간헐적으로만 SSH 접속이 필요한 시스템에 적합하다.
  4. 주의사항:
    • 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를 사용하는 것이 권장된다.

반응형