주희아빠의 헝그리 라이딩

Ubuntu 24.04 LTS - SSH 서버 Port 변경 하기 본문

나름 IT 이야기

Ubuntu 24.04 LTS - SSH 서버 Port 변경 하기

도림천 버섯돌이 2024. 5. 1. 11:17

2024.5.1

최근 배포되는 리눅스 데스크탑 배포본에서는 sshd 서비스가 설치되지 않습니다. 필요한 사람들이 직접 설치하는게 맞겠지요.

Ubuntu 24.04 에 sshd 설치를 진행해 봅니다. 사실 방법 자체는 매우 쉽지만 중간에 살짝 바뀐 것이 있어서 정보 납깁니다.

 

일단 ssh 가 정말 없나 확인을 해 보고 설치를 진행합니다. 

-- 서비스 확인
$ systemctl status ssh
Unit ssh.service could not be found.

-- ifconfig 나 netstat 등 자주 사용하는 net 관련 명령어
$ sudo apt install net-tools

-- openssh 서버 설치
$ sudo apt install openssh-server

 

-- 22번 포트가 살아 있는지 확인
$ netstat -an|grep LIST
tcp6       0      0 :::22                   :::*                    LISTEN 
...중략

-- 서비스 정보 확인
$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: enabled)
     Active: active (running) since Wed 2024-05-01 10:05:38 KST; 17s ago
TriggeredBy: ● ssh.socket
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 9419 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 9421 (sshd)
      Tasks: 1 (limit: 4499)
     Memory: 1.2M (peak: 1.4M)
        CPU: 82ms
     CGroup: /system.slice/ssh.service
             └─9421 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

 5월 01 10:05:38 multitab-Acer systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
 5월 01 10:05:38 multitab-Acer sshd[9421]: Server listening on :: port 22.
 5월 01 10:05:38 multitab-Acer systemd[1]: Started ssh.service - OpenBSD Secure Shell server.

 

여기까지 하고 마치면 끝이긴 한데 보통은 ssh 의 경우 22번 기본 포트를 그대로 사용하지 말고 다른 것으로 변경하기를 권장합니다.

이전에는 다음 경로의 파일을 수정하고 ssh 서비스를 재시작하면 됐는데 ubuntu 24.04 에서는 그게 안되네요.

$ sudo vi /etc/ssh/sshd_config

Port 22 <- 다른 것으로 변경

$ sudo systemctl restart ssh


ssh 서비스를 멈추려고 해도 안된다는 메세지가 나옵니다.

찾아보니 ubuntu 22.10 이후 ssh 가 ssh.socket 방식으로 바뀌었다고 합니다.

$ sudo systemctl stop ssh
Stopping 'ssh.service', but its triggering units are still active:
ssh.socket

 

자세한 내용은 아래에서 설명하기로 하고 우선은 /etc/ssh/sshd_config 파일 수정후 daemon-reload 를 먼저 해 주고 다음 단계를 수행합니다.

$ sudo vi /etc/ssh/sshd_config

Port 22 <- 다른 것으로 변경

$ sudo systemctl daemon-reload
$ sudo systemctl restart ssh

-- ssh 서비스 확인.
$ sudo systemctl status ssh

 

여전히 안되는 경우에는 명시적으로 ssh.socket 을 먼저 내려줍니다.

-- ssh.socket 를 먼저 내려줌
$ sudo systemctl stop ssh.socket
$ sudo systemctl stop ssh

-- ssh 서비스 시작
$ sudo systemctl start ssh

-- ssh 서비스 확인
$ sudo systemctl status ssh
$ netstat -an|grep LIST

 

ssh.socket 방식으로 바뀌면서 sshd 서비스가 시작되기 전까지는 호출을 안하고 있어 메모리를 아낄 수 있다는데, 아니 sshd 가 필요 없는 사람이야 설치를 안 했을테고 필요해서 설치한 사람이면 결국 실행할 텐데...  저같은 옛날 사람들은 이걸 왜 고쳤냐고 구시렁 거립니다.

$ sudo vi /etc/systemd/system/ssh.socket.d/listen.conf

[Socket]
ListenStream=1234

$ sudo systemctl daemon-reload
$ sudo systemctl restart ssh

그런데 워낙 불만들이 많았는지 최신 버전에서는 이마저도 필요 없어지고 다시 예전 방법인 sshd_config 수정으로 원복되었습니다. 위에서 설명한 대로 daemon-reload 만 잘해 주면 됩니다.

 

ssh.socket 동작 방식을 철회하고 예전 방식인 ssh.service 로 돌리는 방법도 있지만 이건 대세를 거스리는 일이니 추천하지 않습니다.

$ sudo systemctl daemon-reload
$ sudo systemctl disable ssh.socket
$ sudo systemctl stop ssh.socket
$ sudo systemctl enable ssh.service
$ sudo systemctl start ssh.service

 

참고 링크.
https://askubuntu.com/questions/1439461/ssh-default-port-not-changing-ubuntu-22-10
https://discourse.ubuntu.com/t/sshd-now-uses-socket-based-activation-ubuntu-22-10-and-later/30189/39

 

 

반응형