0 目录
1 telnet
1.1 telnet是什么
telnet是一种远程登录协议,可以使用户远程操作主机。
telnet协议的实现程序就叫telnet。服务端安装程序包telnet-server,客户端安装程序包telnet。
服务端监听在tcp端口23。
由于telnet使用的是明文传输,所以最好用ssh。各linux发行版默认也是没安装的。
1.2 telnet如何启动
1.2.1 瞬时守护进程、独立守护进程
服务进程分为独立守护进程、瞬时守护进程。
独立守护进程:通常是被访问比较频繁的进程。服务进程一直运行,监听在指定端口,随时响应。比如httpd。
瞬时守护进程:被访问频率较低,若服务进程一直运行则会浪费系统资源。如telnet。
1.2.1 对于CentOS 6
对CentOS 6 来说,linux提供了超级守护进程xinetd来统一管理瞬时守护进程。
机制:由xinetd来代替各瞬时守护进程的服务监听在对应端口,各服务进程没有真正启动。当有对指定服务的请求时,xinetd再启动对应的服务,响应完成后,服务进程又终止。从而减少对系统资源的浪费。
xinetd的配置文件为/etc/xinetd.conf和/etc/xinetd.d目录下,被xinetd管理的服务在/etc/xinetd目录下都有对应的文件:
[root@node1 ~]% ls /etc/xinetd.d/
chargen-dgram daytime-dgram discard-dgram echo-dgram rsync telnet time-stream
chargen-stream daytime-stream discard-stream echo-stream tcpmux-server time-dgram
比如telnet对应的内容(本机已安装telnet-server):
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}
默认disable字段的设置为yes,表示禁用。改为“no”,并重启xinetd,telnet就会自动启动了:
[root@node1 ~]% service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@node1 ~]% ss -tnlp | grep 23 | grep -v grep
LISTEN 0 64 :::23 :::* users:(("xinetd",1756,5))
可以看到监听23号端口的进程是xinetd,而不是telnet。
也可使用chkconfig来控制telnet是否自动启动:
[root@node1 ~]% chkconfig telnet on # 瞬时守护进程不考虑级别,要令其开机自动启动,直接on就行
chkconfig控制等价于在xinetd的telnet配置文件中修改disable项,两种是一致的。
1.2.2 对于CentOS 7
由于CentOS 7使用systemd来管理所有服务,所以不再使用xinetd来管理瞬时守护进程而改用systemd。
systemd管理的各服务在/usr/lib/sysetmd/system下有对应的.service文件,不过在CentOS 7上安装的telnet-server还生成了.socket文件:
[root@node171 etc]% rpm -ql telnet-server
/usr/lib/systemd/system/telnet.socket
/usr/lib/systemd/system/telnet@.service
/usr/sbin/in.telnetd
/usr/share/man/man5/issue.net.5.gz
/usr/share/man/man8/in.telnetd.8.gz
/usr/share/man/man8/telnetd.8.gz
启动telnet.socket就是令systemd代为监听23端口,而不真正启动telnet服务,待有请求来时再启动:
[root@node171 ~]% systemctl start telnet.socket
[root@node171 ~]% ss -tnlp | grep 23 | grep -v grep
LISTEN 0 128 :::23 :::* users:(("systemd",pid=1,fd=41))
可以看到监听23号端口的是systemd。
1.3 效果
telnet客户端使用格式:telnet [host[:port]]
,如果监听的不是默认端口则需要指明端口号。
默认不允许使用root直接登录,如需要,可使用普通用户登录,然后su到root。
在主机192.168.0.171(CentOS 7)启动telnet-server,在主机192.168.0.175(CentOS 7)作为客户端访问,验证效果:
1、在171创建普通用户user1:
[root@node171 ~]% useradd user1
[root@node171 ~]% echo user1 | passwd --stdin user1
Changing password for user user1.
passwd: all authentication tokens updated succ