System/Linux

[Linux] 원격 관리 서비스(Telnet, SSH)

Yoonsoo Park 2024. 9. 26. 19:46

 한 가지 상황을 가정해보자, 만약, 사내에 리눅스 관리자가 나 한 명 뿐인데, 내가 휴가를 가야하는 상황이라면 어떻게 할까? 휴가를 포기하는 과감한 결정을 내려야 할까? 이런 상황에서 우리의 황금같은 휴가를 지켜줄 수 있는 방법이 원격 관리 서비스(Telnet, SSH, RDP..)이다. 

 

 

1. Telnet

 TelnetCUI(CLI)평문 통신 기반의 원격 관리 서비스(프로토콜도 Telnet)이다. 여기서 평문(plain text) 통신이란 통신 과정이 암호화되지 않음을 의미하기 때문에 Telnet은 보안이 중요한 환경에서는 부적절하다(이러한 이유로 요즘은 SSH가 광범위하게 사용되고 있다). Telnet은 기본 통신 포트로 TCP 23번을 사용하며, Telnet을 통해 서버, 네트워크 장비(라우터..), 네트워크 보안 장비(방화벽..) 등을 원격으로 관리할 수 있다.  Telnet을 사용하기 위해서는 Telnet 서버와 Telnet 클라이언트가 설치되어 있어야 하는데, 요즘 운영체제에는 일반적으로 Telnet 클라이언트가 설치되어 있으므로, Telnet 서버 설치만 해보도록 하겠다. 

 

Telnet 서버 설치 과정

* 본 포스팅에서는 rpm을 이용해서 설치했으나, 인터넷이 가능한 환경에서는 dnf를 사용해도 된다.

 

1. Rocky.dvd.iso 파일을 삽입

2. 마운트 및 rpm을 이용하여 telnet-server 패키지 설치 

<telnet-server 패키지 설치 과정>

 

3. Telnet 서비스 시작 및 상태 확인 

  • systemctl 명령어를 통해 Telnet 서비스를 실행해준다
  • 간혹 오류로 인해 포트가 열리지 않는 경우가 있다. 그래서 netstat -anp | grep :23 명령어를 통해 포트를 다시 확인해주는 과정을 거친다 
    • netstat: 네트워크 상태를 보여주는 명령어
    • -a: 모든 연결을 보여준다
    • -n: IP 주소와 포트 번호를 호스트명, 서비스명 대신 숫자 형식으로 보여준다
    • -p: 네트워크 연결과 연관된 프로세스를 보여줌

<Telnet 서비스 상태 확인>

 

4. Telnet 클라이언트를 통해서 서버에 접속

  • Window(Putty)

*접속하고자 하는 서버, PC의 IP 주소와 23번 포트를 입력한다

<PuTTY 실행 화면>
<PuTTY를 통해 실행된 터미널>

 

  • Linux

1) 리눅스 서버에서 접속할 사용자를 만들고, 비밀번호를 설정한다

adduser [사용자 명]
passwd [사용자 명]

 

2) 접속하고자 하는 PC에서 Telnet 클라이언트를 이용해 접속

telnet [서버 IP 주소]
whoami => 커널이 유사하게 생겼으므로 접속된 사용자 이름을 확인한다

 

 

 

2. SSH(Secure Shell)

SSH는 L7(application layer) 프로토콜로, 네트워크를 통해 시스템에 안전하게 접속할 수 있게 해주는 암호화를 지원하는 통신 프로토콜/서비스이다. Telnet에 비해 안전한 통신을 수행하기 때문에 대부분 SSH을 이용하여 원격 접속을 수행한다. SSH는 TCP 22번 포트를 사용한다. 기본적으로 SSH의 서버와 클라이언트는 리눅스에서 기본으로 제공이 된다. 

 

1. SSH 서버 설정 상태 확인 

systemctl status sshd => 설정 확인
systemctl start sshd => SSH 활성화
systemctl stop sshd => SSH 비활성화
netstat -anp |grep :22 => 포트 확인

*만약 SSH이 설치되어있지 않은 경우 openssh-server 패키지를 설치하면 된다

<systemctl status sshd>
<netstat -anp ❘grep :22>

 

 

2. SSH 클라이언트로 서버 접속

*윈도우의 경우 PuTTY로 Telnet과 같은 방식으로 접속 가능하다

ssh [사용자명]@[서버 IP 주소 또는 도메인]
whoami
exit => 접속 해제

 

 

*왜 SSH는 sshd(SSH 데몬)이 포트를 여는데, Telnet은 systemd가 포트를 열까?

: 사용 빈도의 차이 때문이다. SSH은 암호화를 이용한 보안 통신이 가능한데 반해 Telent은 평문 통신이기 때문에 보안이 취약하다. 따라서 현대 시스템에서는 대부분 SSH을 이용해 서버 및 네트워크 장비를 관리하는데, SSH은 사용 빈도가 높기 때문에 sshd 데몬을 이용하여 상시 포트를 열어두고, Telnet의 경우 상대적으로 거의 사용되지 않기 때문에 필요할 때만 systemd가 포트를 열어 소켓을 활성화시켜 사용하는 것이다. 

 

*데몬(daemon, =서비스)와 소켓(socket)

 

데몬(daemon)

  • 평상시에도 늘 백그라운드에서 작동하는 서버 프로세스, 시스템과 무관하게 독립적으로 실행된다
  • 웹 서버 서비스(httpd), DB 서버 서비스(mysqld), FTP 서버 서비스(vsftpd)..

소켓(Socket)

  • 필요할 때만 작동하는 서버 프로세스
  • Telnet 서비스(telnet.socket)

데몬과 소켓은 모두 systemd에서 관리하며, systemctl 명령어를 통해 설정 가능하다. 

systemctl start [서비스/소켓]
=> 서비스/소켓 실행

systemctl stop [서비스/소켓]
=> 서비스/소켓 중지

systemctl status [서비스/소켓]
=> 서비스/소켓의 설정 상태를 확인

systemctl [enable/disable] [서비스/소켓]
=> 부팅 후 자동으로 실행할지 설정

 

 

 

힘들지만 오늘도 해낸 나를 위한 한 마디,

"당신이 노력하는 한, 영원한 실패는 없다(There is no failure except in no longer trying)", Elbert Hubbard

 

"안되면 한 번 더, 그래도 안되면 두 번 더 해보자. 내가 포기하지 않는 한 실패는 영원하지 않다"

 

 

 

'System > Linux' 카테고리의 다른 글

[Linux] DNS part 2  (2) 2024.10.03
[Linux] DNS part 1  (0) 2024.10.01
[Linux] 파일 시스템, 마운트  (0) 2024.09.25
[Linux] 저장소(Storage)관리  (5) 2024.09.24
[Linux] init? runlevel? target?  (0) 2024.09.23