Telnet 연결이 외부 호스트에 의해 종료되었습니다.

Telnet 연결이 외부 호스트에 의해 종료되었습니다.

두 대의 컴퓨터 가 동일한 네트워크에 연결되어 client PC IP: 10.49.46.5/24있습니다 . server PC IP: 10.49.46.2/24이 두 컴퓨터 간의 대화형 통신을 생성하기 위해 명령을 사용하려고 하면 telnet다음과 같은 결과가 나타납니다.

[root@xxx:~]# telnet 10.49.46.2
Trying 10.49.46.2...
Connected to 10.49.46.2.
Escape character is '^]'.

Connection closed by foreign host.
[root@xxx:~]#

서버는 xinetd.conf다음과 같습니다.

    defaults
    {
            instances               = 60
            log_type                = SYSLOG authpriv
            log_on_success          = HOST PID EXIT
            log_on_failure          = HOST ATTEMPT
            cps                     = 25 30
    }
includedir /etc/xinetd.d

서버는 telnet.config다음과 같습니다.

service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/telnetd
        log_on_failure  += USERID
        instances       = 10
        disable         = no
}

그들은 TCPWrapper hosts.allow:

telnetd: /etc/telnetd.hosts
tfdpd: /etc/tftpd.hosts
sshd: /etc/sshd.hosts

그들은 TCPWrapper hosts.deny:

ALL:ALL

지금:

  1. 확인해보니 ssh실행중이네요 port 22.
  2. 확인해보니 /var/log/message명령이 xinetd시작된 다음 즉시 텔넷이 종료되는 것으로 나타났습니다.
  3. iptables다음을 사용하여 텔넷 패키지를 제거하지 않도록 확인했습니다 .iptables -L

문제가 무엇인지, 해결 방법을 찾는 데 도움을 주실 수 있나요?

답변1

[root@xxx:~]# telnet 10.49.46.2
Trying 10.49.46.2...
Connected to 10.49.46.2.
Escape character is '^]'.

이는 원격 데몬과의 TCP 연결이 성공적으로 설정되었음을 의미합니다. 무슨 데몬? xinetd허브 역할을 하는 곳입니다. 이제 연결되었으므로 xinetd특정 서비스( telnet)를 시작해 보세요.

Connection closed by foreign host.

이는 telnet서비스 시작에 실패했음을 의미합니다. telnetd명령줄에 디버그 옵션을 추가하고 xinetd로그를 읽어서 정확히 무엇이 실패했는지 확인해야 할 수도 있습니다 .


BusyBox 버전을 실행 중인 것 같습니다 telnetd. 클래식 버전과 달리 telnetdBusybox에서 제공하는 서비스는 독립 실행형 데몬이며 -i상호 작용할 수 있는 옵션이 필요합니다 inetd(독립 실행형 데몬과 호환되지 않는 특정 인터페이스에 의해 시작된 서비스 inetd: 사용할 수 없음). 소켓이 열려 있고 청취 중이면 stdin/stdout을 통해 클라이언트와 통신해야 합니다.

따라서 xinetd구성은 다음과 같아야 합니다.

service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/telnetd
        server_args     = -i
        log_on_failure  += USERID
        instances       = 10
        disable         = no
}

답변2

지정된 텔넷 포트를 사용하십시오 telnet 10.49.46.2 24.

Cognex 카메라 설명서에 따르면 "포트 번호를 제공하면 Unix 사용자 이름/비밀번호 인증이 비활성화되고 Unix 시스템에서 사용자 이름과 비밀번호를 묻는 메시지를 표시하게 됩니다."

답변3

xhienne는 몇 가지 좋은 점을 지적합니다. TCP 핸드셰이크가 거의 완료되었습니다. 닫힌 연결은 두 가지 중 하나를 의미합니다.

1) telnetd 서비스를 시작하지 못했습니다(로그 확인).

2) 연결하려는 클라이언트가 /etc/telnetd.hosts에 나열되어 있지 않습니다(로그를 확인하거나 일시적으로 /etc/hosts.deny 이름을 변경하여 확인).

클라이언트 IP: 10.49.46.5/24

아니요, IP 호스트 주소에는 넷마스크가 없습니다.

Telnetd 사용을 중지하십시오. 원격으로 로그인할 때마다 새끼 고양이가 울어요. (ssh 또는 telnet-tls 사용)

답변4

다음 명령을 시도해 보십시오:

sudo apt install tcpd

관련 정보