> CentOS > CentOS入门 >

CentOS5开启telnet服务

1.安装需要的软件
telnet是默认安装的,telnet-server需要后面安装。

[root@CentOS5 cdrom]# rpm -qa|greptelnet            //检查sys里有没有安装telnet及相关包 
[root@CentOS5 cdrom]# yum installtelnet-server     //如果只有telent包就装server包,没有就都装
[root@CentOS5 cdrom]# rpm -qa | grep telnet
telnet-0.17-38.el5
telnet-server-0.17-38.el5

2.启动telnet.

[root@CentOS5 cdrom]# chkconfig --list | greptelnet      //检查下telnet的run level
       ekrb5-telnet:   off
       krb5-telnet:   off
       telnet:        off

ekrb5-telnet和krb5-telnet好像是增强型的telnent.先开老的。
[root@CentOS5 cdrom]# chkconfig telneton     
[root@CentOS5 cdrom]# service xinetdrestart   //telnet只是xinetd下的服务,重启它   

  

3.登陆尝试


普通用户OK,root输入正确密码出错误提示.
CentOSrelease 5 (Final)
Kernel 2.6.18-53.el5 on an i686
login: root
Password:
Login incorrect

查看log有如下信息。
  tail /var/log/secure
  Mar 17 02:16:55 localhost login:pam_securetty(remote:auth): access denied: tty 'pts/3' is notsecure !
  Mar 17 02:16:59 localhost login: FAILED LOGIN 1FROM 192.168.160.1 FOR root, Authentication failure


4.解决3中root登陆的阻止条件

 

这里有两个方法。
方法1:

 确认/etc/pam.d/login中的pam_securetty.so行,并将其注释掉"#"

  1. [root@rhel52 /]# vim /etc/pam.d/login 
  2. #%PAM-1.0 
  3. #auth [user_unknown...... pam_securetty.so   这一行注释掉  

 方法2:
根据"tty 'pts/3' is not secure"的提示。添加 pts/ 系列终端到/etc/securetty
  pts/1
  pts/2
  pts/3                 //增加这个应该是增加使用root登陆的个数,后面有解释
  pts/4
  pts/5
  //也不知道有多少可以加,不能登陆就看log,如果不够再加好了。

 

5、telnet服务重启

  1. [root@rhel52 /]# service xinetd restart 
  2. Stopping xinetd:                                   OK  
  3. Starting xinetd:                                   OK  
  4. [root@rhel52 /]# 

6、telnet服务测试

  1. Microsoft Windows [版本 6.1.7100] 
  2. 版权所有 (c) 2009 Microsoft Corporation.保留所有权利. 
  3. C:\>telnet 192.168.xx.xx 
  4. 正在连接... 
  5. Red Hat Enterprise Linux Server release (Tikanga) 
  6. Kernel 2.6.18-8.el5 on an i686 
  7. login: root 
  8. Password: 
  9. Last login: Sat Aug  22:47:15 from 192.168.238.1 
  10. [root@rhel52 ~]# 

7、telnet端口更改      //这一步可不动

  1. 设定配置文件/etc/services 
  2. [root@CentOS5 /]#vi /etc/services 

找到下面的两行: 

  1. telnet          23/tcp //如果要改则改到2000以后,以免与其它冲突
  2. telnet          23/udp  //具体查看vim/etc/services中端口的分配情况

8、telnet服务限制

 

设定配置文件/etc/xinetd.d/telnet

  1. [root@rhel52 /]# vim /etc/xinetd.d/telnet 
  2. access_time     20:00-24:00 
  3. default: on 
  4. description: The telnet server serves telnet sessions; it uses 
  5.       unencrypted username/password pairs for authentication. 
  6. .... 
  7. log_on_failure  += USERID 
  8. only_from       192.168.0.0/16  //这个没事不要加
  9. #bind           192.168.0.100//这里全注掉了,自选
  10. #only_from      192.168.0.0/24 
  11. #no_access      192.168.0.{80,90} 
  12. #access_times   8:00-9:00 20:00-23:00 

9、配置文件krb5-telnet

 

文件所在位置 /etc/xinetd.d/krb5-telnet

其实rhel5已经装了krb5-telnet,那么就可以启用这个服务来达到开启telnet的目的.不用再安装telnet-server这个软件包了.可以使用Kerberos5来进行认证.

1、开启krb5-telnet服务.

  1. [root@rhel52 /]# vim /etc/xinetd.d/krb5-telnet 
  2. 将"disabledisable yes"  改为"disable no" 

2、重启xinetd服务

 

10、配置文件ekrb5-telnet

 

文件所在位置 /etc/xinetd.d/ekrb5-telnet

ekrb5-telnet可以用来提供加密的telnet服务.如果启用了ekrb5-telnet服务,但是又没有Kerberos服务器的话,那么在进行telnet登录时,总是会报"Unencrypted connection refused.Goodbye.(未加密的连接,拒绝服务)"这个错误.

1、开启ekrb5-telnet服务.

[root@rhel52 /]# vim /etc/xinetd.d/ekrb5-telnet

将"disable = yes"  改为"disable = no"

2、重启xinetd服务

注:使用Kerberos 5来认证和加密telnet会话前,需要先搭建一个Kerberos服务器.

 

11、telnet服务登陆错误解析

 

①错误信息:

  1. Cannot resolve network address for KDC in requested realm while getting initial credentials 

 当出现如上信息时,请检查/etc/xinetd.d/krb5-telnet,并将"disable = no"改成yes

  1. [root@rhel52 /]# vim /etc/xinetd.d/krb5-telnet 
  2. default: off 
  3. description: The kerberized telnet server accepts normal telnet sessions, 
  4.              but can also use Kerberos authentication. 
  5. service telnet 
  6. ....
  7. disable         no    <- no改成yes  //这个及下面一个, 两个no yes多试试,有收获的

②错误信息:

  1. Unencrypted connection refused. Goodbye. 

 遗失对主机的连接.当出现如上信息时,请检查/etc/xinetd.d/ekrb5-telnet,并将"disable =no"改成yes

  1. [root@rhel52 /]# vim /etc/xinetd.d/ekrb5-telnet 
  2. default: off 
  3. description: The kerberized telnet server accepts only telnet sessions, 
  4.              which use Kerberos authentication and encryption. 
  5. ....
  6. disable         no    <- no改成yes 

③错误信息:

  1. getnameinfo: localhost: Success 
  2. Temporary failure in name resolution: Illegal seek 

  当出现如上信息时,请检查/etc/hosts,并将客户端的地址和主机名写进去.

  1. [root@rhel52 /]# vim /etc/hosts 
  2. Do not remove the following line, or various programs 
  3. that require network functionality will fail. 
  4. 127.0.0.1               localhost.localdomain   localhost       rhel52 
  5. #::1                    rhel52                  localhost6 
  6. 192.168.238.220         rhel52 
  7. 192.168.0.100           win-gk18e84nu08 

解释如下: "ekrb5-telnet" was the encrypted telnetserver that I needed to turn off to run "krb-telnet" which allowednon-encrypted telnet connections.


二、终端解释
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由Teletype公司生产的。在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:

1.串行端口终端(/dev/ttySn)

串行端口终端(Serial PortTerminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0)、/dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0)、(4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echotest >/dev/ttyS1会把单词"test"发送到连接在ttyS1(COM2)端口的设备上。

2.伪终端(/dev/pty/)

伪终端(PseudoTerminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分别是/dev/pty/m3和/dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3)。而ttyp3则是另一个程序用于读写操作的逻辑设备。这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的程序,则需要专门设计来使用ptyp3(m3)逻辑设备。例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设备ptyp2(m2)上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。当telnet从远端获取了一个字符时,该字符就会通过m2、s2传递给getty程序,而getty程序就会通过s2、m2和telnet程序往网络上返回"login:"字符串信息。这样,登录程序与telnet程序就通过“伪终端"进行通信。通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。 在使用设备文件系统(devicefilesystem)之前,为了得到大量的伪终端设备特殊文件,使用了比较复杂的文件名命名方式。因为只存在16个ttyp(ttyp0—ttypf)的设备文件,为了得到更多的逻辑设备对,就使用了象q、r、s等字符来代替p。例如,ttys8和ptys8就是一个伪终端设备对。不过这种命名方式目前仍然在RedHat等Linux系统中使用着。但Linux系统上的Unix98并不使用上述方法,而使用了"ptymaster"方式,例如/dev/ptm3。它的对应端则会被自动地创建成/dev/pts/3。这样就可以在需要时提供一个pty伪终端。目录/dev/pts是一个类型为devpts的文件系统,并且可以在被加载文件系统列表中看到。虽然“文件"/dev/pts/3看上去是设备文件系统中的一项,但其实它完全是一种不同的文件系统。

3.控制终端(/dev/tty)

如果当前进程有控制终端(ControllingTerminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令"ps–ax"来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令"tty"可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。

4.控制台终端(/dev/ttyn, /dev/console)

在Linux系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以向/dev/tty0进行写操作,

5 虚拟终端(/dev/pts/n)


在Xwindows模式下的伪终端.
另有人解释:每一个远程连接都会产生一个pst设备;


6.其它类型

Linux系统中还针对很多不同的字符设备存在有其它种类的终端设备特殊文件。例如针对ISDN设备的/dev/ttyIn终端设备等。

[转自互联网, 有整理有改动, 自用可行]

(责任编辑:IT)