[리눅스] 텔넷(Telnet)을 이용한 원격 접속

목차

Telnet을 이용하면 윈도우에서 원거리에 있는 리눅스 서버에 원격 로그인할 수 있다. 이 글에서는 CentOS/RHEL 리눅스에 텔넷 서버(telnet-server)를 설치하고, systemd 소켓으로 서비스를 활성화한 뒤, 23번 포트 방화벽을 열어 윈도우에서 원격 접속하는 전 과정을 정리한다. 다만 Telnet은 모든 데이터를 평문으로 전송해 보안에 취약하므로, 실무에서는 SSH 사용을 권장한다는 점을 먼저 짚고 간다.

Telnet이란

Telnet(텔넷)은 원격지의 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜이다. 해당 컴퓨터를 물리적으로 소지하고 있지 않아도, 네트워크를 통해 원거리에 있는 컴퓨터에 로그인하여 그 컴퓨터의 명령줄(CLI) 기능을 그대로 사용할 수 있다. 기본 통신 포트는 TCP 23번이며, 클라이언트가 입력한 명령은 서버로 전달되고 서버의 출력이 다시 클라이언트 화면에 표시되는 양방향 터미널 세션을 제공한다.

지금부터 CentOS/RHEL 계열 리눅스에서 Telnet 서버를 설치·설정하고, 윈도우 클라이언트에서 원격 접속하는 방법을 단계별로 알아본다.

Telnet 보안 경고 — 평문 전송

실습에 앞서 반드시 알아야 할 점이 있다. Telnet은 아이디·비밀번호를 포함한 모든 데이터를 암호화 없이 평문(plaintext)으로 전송한다. 같은 네트워크에 패킷 스니핑 도구만 있으면 로그인 정보가 그대로 노출되며, 중간자 공격(MITM)에도 취약하다. 이 때문에 Telnet의 23번 포트는 보안 점검에서 대표적인 위험 포트로 분류되며, 외부에 노출하지 않는 것이 원칙이다.

따라서 이 글의 실습은 폐쇄된 학습용 내부망에서 Telnet의 동작 원리를 이해하는 목적으로만 진행한다. 운영 환경에서 원격 접속이 필요하다면 암호화를 지원하는 SSH를 사용해야 한다. SSH 대안은 아래 별도 단락에서 다룬다.

Telnet 서버 설치

CentOS/RHEL 계열에서는 dnf 명령으로 텔넷 클라이언트와 서버 패키지를 함께 설치한다. 패키지 설치는 root 권한이 필요하므로 root 사용자로 접속했거나 sudo를 붙여 실행한다.

# 텔넷 클라이언트 + 서버 패키지 설치
dnf -y install telnet telnet-server

# 출력 예시
...
Installed:
  telnet-1:0.17-76.el8.x86_64   telnet-server-1:0.17-76.el8.x86_64
Complete!

dnf 명령어 : RedHat 계열 리눅스에서 패키지를 설치·관리할 때 사용하는 도구다. Dandified YUM의 약자로, 기존 yum의 단점이던 “느린 속도”, “과다한 메모리 사용”, “느린 의존성 결정”을 개선한 차세대 패키지 관리자다. 설치 시 root 권한이 없으면 권한 오류가 나므로 반드시 root로 진행한다.

서비스 활성화와 방화벽 포트 개방

telnet.socket 서비스 활성화

최신 CentOS/RHEL에서 텔넷 서버는 systemd 소켓 유닛(telnet.socket)으로 동작한다. 즉 접속 요청이 들어올 때 systemd가 텔넷 데몬을 켜는 방식이다. 다음 명령으로 소켓을 시작하고, 부팅 시 자동 실행되도록 등록한 뒤 상태를 확인한다.

systemctl start telnet.socket     # 텔넷 소켓 시작
systemctl enable telnet.socket    # 부팅 시 자동 실행 등록
systemctl status telnet.socket    # 서비스 상태 확인

systemctl status 결과에 다음과 같이 active (listening)으로 표시되면 정상이다.

● telnet.socket - Telnet Server Activation Socket
   Loaded: loaded (/usr/lib/systemd/system/telnet.socket; enabled; ...)
   Active: active (listening) since ...
   Listen: [::]:23 (Stream)

접속용 사용자 계정 생성

텔넷으로 로그인할 일반 사용자 계정을 만든다. useradd로 계정을 만들고 passwd로 비밀번호를 지정한다.

useradd teluser       # 텔넷 접속용 계정 생성
passwd teluser        # 비밀번호 설정

비밀번호를 8자 미만으로 지으면 OS가 경고를 출력하지만 강제로 지정할 수는 있다. 학습용이라도 실무 습관을 들이기 위해 8자 이상의 무작위 비밀번호로 설정하는 것을 권장한다.

Telnet 사용자 패스워드 설정 화면

방화벽 23번 포트 개방

텔넷 서버를 띄워도 방화벽(firewalld)이 23번 포트를 막고 있으면 외부에서 접속되지 않는다. 텔넷 서비스를 방화벽에 영구 등록하고 다시 로드한다.

# 텔넷 서비스(23/tcp) 영구 허용
firewall-cmd --permanent --add-service=telnet
# 또는 포트로 직접 지정
firewall-cmd --permanent --add-port=23/tcp

# 규칙 적용
firewall-cmd --reload

# 적용 확인 (services 항목에 telnet, ports에 23/tcp가 보이면 정상)
firewall-cmd --list-all

--permanent 옵션은 재부팅 후에도 규칙이 유지되도록 영구 적용하는 설정이다. 적용 후 반드시 firewall-cmd --reload로 변경 사항을 반영해야 한다.

윈도우에서 Telnet 원격 접속 테스트

윈도우 텔넷 클라이언트 활성화

윈도우는 기본적으로 텔넷 클라이언트가 꺼져 있다. 시작 메뉴에서 ‘Windows 기능 켜기/끄기’를 실행한 뒤, 목록에서 ‘텔넷 클라이언트(Telnet Client)’를 체크해 기능을 활성화한다. 또는 PowerShell에서 다음 명령으로 한 번에 켤 수 있다.

# 관리자 권한 PowerShell
dism /online /Enable-Feature /FeatureName:TelnetClient

네트워크 연결 확인(ping)

접속 전에 윈도우의 PowerShell 또는 명령 프롬프트에서 ping으로 리눅스 서버까지 네트워크가 닿는지 확인한다.

ping 192.168.111.100
ping으로 Telnet 서버 연결 확인

Telnet 원격 로그인

ping이 정상 응답하면 telnet 명령으로 리눅스 서버에 접속한다. 앞서 만든 사용자 계정과 비밀번호를 입력하면 로그인된다.

telnet 192.168.111.100

# 접속 후 로그인 프롬프트
Kernel ... on an x86_64
login: teluser
Password:

로그인이 끝나면 리눅스 셸이 열린다. ip addr(구버전은 ifconfig) 명령으로 서버의 IP 주소를 확인하면, 원격 접속한 호스트가 텔넷 서버(192.168.111.100)임을 알 수 있다. 즉 윈도우에서 리눅스 서버에 정상적으로 원격 접속된 것이다.

ip addr        # 또는 ifconfig
# inet 192.168.111.100/24 ... 가 표시되면 접속 성공

Telnet 대신 SSH를 써야 하는 이유

Telnet은 원리를 익히기에는 좋지만, 평문 전송이라는 치명적 단점 때문에 실제 운영 환경에서는 사용하지 않는다. 같은 터미널 경험을 제공하면서 세션 전체를 암호화하는 SSH(Secure Shell)가 사실상 표준이다. 두 프로토콜의 차이를 정리하면 다음과 같다.

구분TelnetSSH
기본 포트23/tcp22/tcp
암호화없음(평문)강력한 암호화
인증아이디·비밀번호(평문)비밀번호 + 공개키 인증
도청·MITM 위험매우 높음낮음
실무 사용비권장(학습·디버깅용)표준

SSH는 별도 패키지 설치 후 systemctl start sshd로 서비스를 띄우고 22번 포트를 열면, 텔넷과 거의 같은 방식으로 ssh teluser@192.168.111.100 형태로 접속할 수 있다. 리눅스 원격 접속을 실무에 적용한다면 Telnet 대신 SSH로 구성하자. SSH 서버 구축은 OpenSSH 원격 접속 설정 글에서 자세히 다룬다.

자주 묻는 질문(FAQ)

Telnet 설치는 됐는데 접속이 안 된다

대부분 방화벽 문제다. firewall-cmd --list-all로 23번 포트(또는 telnet 서비스)가 열려 있는지 확인하고, systemctl status telnet.socketactive (listening)인지 점검한다. ping이 응답하는지도 함께 확인한다.

root로 텔넷 로그인이 안 된다

보안상 root의 직접 텔넷 로그인은 기본 차단된다. 일반 사용자 계정으로 로그인한 뒤 su -로 권한을 올리는 것이 안전하고 권장되는 방식이다.

Telnet과 SSH 중 무엇을 써야 하나

실무·운영 환경이라면 무조건 SSH다. Telnet은 학습, 폐쇄망 디버깅, 특정 포트의 개방 여부 확인(telnet 호스트 포트) 정도로만 쓰는 것이 안전하다.

정리

Telnet 서버는 dnf로 telnet-server 패키지를 설치하고, systemctl로 telnet.socket을 활성화한 뒤, 접속용 사용자 계정을 만들고 23번 포트 방화벽을 열면 윈도우에서 원격 접속할 수 있다. 다만 Telnet은 모든 데이터를 평문으로 전송해 보안에 취약하므로, 실제 서버 운영에서는 암호화를 지원하는 OpenSSH 원격 접속으로 대체하는 것이 안전하다. Telnet은 원격 접속의 원리를 이해하는 학습 도구로 활용하고, 실무는 SSH로 마무리하자.

💬 댓글 0

💬 댓글을 남기려면?
첫 댓글을 남겨보세요 ✨

이 콘텐츠가 도움이 됐나요?

누스쿨 커뮤니티에서 더 많은 커리어 전략을 나눠요