ssh는 누가 실행시켜주는가?

00_8_3·2022년 12월 20일
0

Secure Shell (ssh)

ssh 접속에 따른 notification을 slack에 주기 위해
/etc/pam.d/sshd에 맨 아래줄에 작성한 명령어를 누가 실행 시켜주는가?

우분투 실행 -> systemctl 실행 -> systemd 실행 -> sshd 실행 -> 유저 접근

결론 : sshd가 실행될 때 sshd 프로세스가 /etc/ssh/sshd_config파일을 읽고 클라의 요청을 기다린다.
/etc/ssh/sshd_config 파일의 UsePAM yes 가 되어있으면 pam을 바라봅니다.

PAM : Pluggable Authentication Modules, PAM은 다양한 인증 방식을 제공하고, 세션 처리를 수행하는 모듈들의 집합

sshd (ssh daemon)

/usr/sbin/sshd 프로그램이 os 시작과 함께 실행이 된다.
ps axjf | grep ssh를 통해 root 계정위에 프로세스가 실행되는 것을 확인 가능.

또는 sudo systemctl status ssh

ubuntu에서 시작프로그램은 systemd가 관리를 한다.
systemd-analyze blame | grep ssh으로 ssh.service를 확인 가능.

/etc/systemd/system

systemd unit 이란

A unit is a systemd object that performs or controls a particular task or action. Systemd uses units to start/stop/manage services, organize boot process, maintain tasks and processes, create sockets, mount file-system and initialize hardware.

참고 : https://www.computernetworkingnotes.com/linux-tutorials/systemd-units-explained-with-types-and-states.html

.service unit file의 형태

unit file은 /etc/systemd/system/에 위치하고 .service 확장자를 갖는다.
foo service이면 /etc/systemd/system/foo.service와 같은 unit file 형태로.

참고 : https://docs.fedoraproject.org/en-US/quick-docs/understanding-and-administering-systemd/#modifying-existing-systemd-services

[Unit]
Description=My custom service
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/sleep infinity

[Install]
WantedBy=multi-user.target
  • Install 섹션은 어떻게 systemd가 service를 설치하는지 지침을 준다.
    • WantedBy는 multi-user.target이 로드될 때 해당 서비스를 실행.

custom systemd service 생성

위의 *.service 파일로 저장 후


$ systemctl daemon-reload // 새 service를 인지하도록 reload
$ systemctl start foo  // 자신이 만든 service 이름
$ systemctl status foo // service가 실행 중인지 확인 가능 / active

/etc/systemd/system/multi-user.target.wants 에 custom한 service가 없는 경우 로드 되지 않기 때문에

systemctl daemon-reload으로 수동적으로 generator를 트리거 할 수 있습니다.

참고

http://www.ktword.co.kr/test/view/view.php?m_temp1=2524
https://www.ssh.com/academy/ssh/sshd
https://unix.stackexchange.com/questions/224992/where-do-i-put-my-systemd-unit-file

0개의 댓글