Linux 텔넷 서버는 텔넷 프로토콜 핸드셰이킹을 사용하지 않습니다.

Linux 텔넷 서버는 텔넷 프로토콜 핸드셰이킹을 사용하지 않습니다.

간단한 터미널 프로그램을 이용하여 리눅스 텔넷 서비스에 접속을 시도하고 있습니다. 서버가 기본 VT-100으로 설정되어 있고 텔넷 서버가 제어 핸드셰이크 시퀀스를 보내고 터미널이 지원되는 옵션으로 응답할 것으로 예상하고 터미널 응답을 기다리는 동안 정지됩니다.

여기에 이미지 설명을 입력하세요 (화질이 좋지 않은점 사과드립니다)

불행히도 터미널은 단순한 통신 프로그램일 뿐이며 텔넷 프로토콜에 대해 알지 못합니다.

원격 터미널 속성 식별을 시작하지 않고 직접 통신으로 이동하도록 텔넷 서버(예: 특정 터미널 유형 설정을 통해)에 지시할 수 있는 방법이 있습니까?

편집하다:

자세한 내용으로 질문을 편집하십시오. 어떤 터미널을 사용하고 있습니까? "기본 통신"프로그램은 무엇입니까?

통신 프로그램은 리눅스 PC와의 TCP 연결을 포트 23으로 오픈한 후, 키보드로 입력한 문자를 전송하고, 수신된 문자를 아무런 문자 처리 없이 화면에 표시해 줍니다.

telnetd 대신(또는 추가로) 서버에서 netcat을 실행하고 이를 사용하여 통신 자체가 작동하는지 디버깅할 수 있습니까?

잘 모르겠습니다. 두 기계를 모두 제어하지 않습니다. 그러나 터미널을 실행하는 시스템이 Linux 시스템에 연결할 수 있고 Linux 시스템이 텔넷 프로토콜 제어 문자를 보낼 수 있다는 것이 100% 사실입니까? (그림에서 볼 수 있습니다. 흰색 문자는 0xff입니다. 텔넷 옵션의 시작 마커입니다.) . Wireshark 로그가 없어서 100%라고는 할 수 없지만 통신은 제대로 되는 것 같고, Telnet 프로토콜 Handshake를 거치지 않는 Telnet 서버입니다.

연결되면 로그인하시겠습니까? 아니면 다른 작업을 수행하시겠습니까? 터미널에서 SSH와 같은 더 안전한 것을 사용할 수 있습니까?

예, 텔넷 서버가 시스템 로그인을 요청하는 "login:"을 표시하길 원합니다. Linux 시스템의 텔넷 서비스는 텔넷 클라이언트를 사용하여 세 번째 시스템에서 로그하는 것이 가능하므로 작동 가능합니다. 하지만 이 텔넷 클라이언트는 텔넷 프로토콜을 인식하고 이에 응답합니다. 위에 설명된 경우 프로그램은 텔넷 제어 코드/프로토콜에 대해 아무것도 모르고 추가 작업(텔넷 프로토콜에 따른 응답) 없이 이를 문자로 표시합니다.

답변1

우선 텔넷 협상은 터미널 유형과 아무런 관련이 없습니다. (실제로 터미널 유형은단호한텔넷 협상 중에.) 따라서 후자를 변경하여 전자를 비활성화할 수 없습니다.

당신은 어떻게~할 수 있다비활성화하는 것은 서버의 특정 telnetd 구현에 따라 다릅니다. (Linux에서만 5개의 ​​서로 다른 in.telnetd를 세어보았는데, 다른 OS에도 고유한 것이 있습니다.)

때로는 서비스 구성(즉, systemd .service 파일 또는 /etc/inetd)에서 사용할 수 있는 telnetd 명령줄 옵션이 있습니다.

모든 것이 실패하면 패치된 telnetd 버전을 직접 컴파일하면 됩니다. 모든 Linux 배포판에는 공식 레시피(dpkg-buildpackage, makepkg...)에서 패키지를 다시 빌드하는 방법이 있습니다.

관련 정보