Telnet을 사용하여 Linux 사용자로 로그인하면 프롬프트가 나타납니다.

Telnet을 사용하여 Linux 사용자로 로그인하면 프롬프트가 나타납니다.

Ubuntu 서버의 포트 23에 대한 설정을 알아내려고 합니다. 전임자가 다소 까다로운 방식으로 설정했으며 이제 기능을 새 시스템으로 마이그레이션해야 합니다. 대략적으로 어떻게 작동하는지 알고 있지만 자세한 내용은 모르므로 지금 알아야 할 내용입니다. 대략적인 기능은 다음과 같습니다.

  • 사용자는 포트 23을 통해 일반 Linux 사용자로 서버에 로그인합니다(항상 동일한 사용자). 자세한 내용은 아래에서...
  • 로그인하면 몇 가지 정보를 입력하라는 메시지가 표시됩니다.
  • 메시지에 따라 정보를 입력한 다음 로그아웃합니다.

기본 셸은 bash입니다(개인 정보 보호를 위해 사용자 이름과 번호가 수정됨).

# grep theuser /etc/passwd
theuser:x:1111:1111::/home/theuser:/bin/bash

.bash_profile스크립트가 로그인 시 사용자를 프롬프트로 리디렉션하는 것을 볼 수 있습니다 .

$ cat /home/theuser/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/scripts

export PATH
unset USERNAME

/home/theuser/scripts/prompts
exit

그러므로 그것에 대해 신비한 것은 없습니다. 그러나 내 질문은 포트 23이 일반 Linux 사용자의 로그인 프롬프트에 정확히 어떻게 연결됩니까? 다음과 같이 로그인할 수 있기 때문에 이것이 사실이라고 확신합니다.

$ telnet localhost 23
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
machinename login: theuser
Password:
Last login: Fri Mar 24 14:25:48 CST 2017 from localhost on pts/5
prompt 1:

포트 23에서 실행 중인 프로세스를 확인하면 다음과 같은 결과가 나타납니다.

$ netstat -tulpn | grep 23
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      2222/inetd

따라서 연결은 에 의해 처리됩니다 inetd. 하지만 inetd내가 무엇을 하고 있는지 모르기 때문에 그것은 나에게 도움이 되지 않습니다 . 보면 /etc/inetd.conf다음 줄이 표시됩니다.

telnet      stream  tcp nowait  root    /usr/sbin/tcpd  /usr/sbin/in.telnetd

그러나 그것은 별로 도움이 되지 않습니다. 나는 telnet그것이 이 컴퓨터에서 실행되고 있다는 것을 이미 알고 있습니다. telnet사용자를 로그인 프롬프트로 리디렉션하도록 구성하는 방법을 알아야 합니다 .

답변1

TELNET 서버가 TCP 포트 23을 수신하도록 하는 것은 "까다롭지" 않습니다. 이것은정상(금세기에 TELNET 사용의 변칙성을 고려하지 않는 한). 그건잘 알려진 포트 번호TELNET 서비스에 사용됩니다.

in.telnetd사용자를 로그인 프롬프트로 "리디렉션"하도록 "구성"되지 않았습니다 . 연결된 클라이언트에 로그인 화면을 표시하는 것은그것이 무엇을 할 수 있는지. 매뉴얼 페이지(qv)는 매우 명확합니다.

Telnetd는 의사 터미널 장치를 클라이언트에 할당한 다음 […] 의사 터미널을 stdin, stdout 및 stderr로 종속시키는 로그인 프로세스를 생성하는 방식으로 작동합니다. Telnetd는 의사 터미널의 마스터 측을 작동하고 텔넷 프로토콜을 구현하며 원격 클라이언트와 로그인 프로세스 간에 문자를 전달합니다.

이것로그인 프로세스프로그램이 실행 login중이고 로그인 프롬프트가 표시됩니다.

관련 정보