一、实验背景
SSH 和 Telnet 用于远程访问服务器的的两大常用协议。
利用它们,我们可以管理并监控生产服务器和企业服务器,更新服务器内核,安装最新的软件包和补丁,能够远程登录服务器,开展软件开发、测试运行、更改代码和重新部署。
关于telnet
Telnet取名自Telecommunications和Networks的联合缩写,这是一种在UNIX平台上最为人所熟知的网络协议。
Telnet使用端口23,它是专门为局域网设计的。
Telnet不是一种安全通信协议,因为它并不使用任何安全机制,通过网络/互联网传输明文格式的数据,包括密码,所以谁都能嗅探数据包。
Telnet中没有使用任何验证策略及数据加密方法,会带来了巨大的安全威胁,因此不再用于通过公共网络访问网络设备和服务器。
关于ssh
SSH取名自安全外壳(Secure Shell),它现在是通过互联网访问网络设备和服务器的唯一的主要协议。
SSH默认情况下通过端口22运行,该端口号可以更改。
SSH是一种非常安全的协议,因为它共享并发送经过加密的信息,从而为通过互联网等不安全的网络访问的数据提供了机密性和安全性。
一旦通讯的数据使用SSH经过加密,就极难解压和读取该数据,所以我们的密码在公共网络上传输也变得很安全。
SSH还使用公钥用于对访问服务器的用户验证身份,这是一种很好的做法,为我们提供了极高的安全性。
两种协议对比
(1) SSH 和 Telnet 应用领域基本重合。
(2) SSH 比 Telnet 更加安全。
(3) 在发送数据时,SSH会对数据加密,而Telnet不会(它会直接发送明文,包括密码)。
(4) SSH使用公钥授权,而Telnet不使用任何授权。
(5) 在带宽上,SSH 会比Telnet多一点点开销。
(6) SSH 几乎在所有场合代替了Telnet。
关于计算机的登录
计算机终端设备通过输入用户账户标识和与之对应的口令的方式被计算机验证的过程。
终端的分类:
1)物理终端:计算机本身的控制台设备:通常将其标识为"pty",在现代计算机上,物理终端与早期的计算机上的物理终端的意义不一样了。在现在的linux系统上,物理终端设备被映射到/dev/console上,所有内核输出的信息都输出到console终端,除此之外,其他用户进程输出的信息一般都输出到虚拟终端或伪终端。
2)虚拟终端:在现代的计算机中,通常将键盘+显示器组合称作"虚拟终端"或者"虚拟控制台",即一个虚拟的终端设备,通常将其标识为"tty"。
3)串行终端:如果服务器上没有装载显卡设备,就可以使用串行终端设备连接计算机,通常将其标识为"ttyS"。
4)模拟终端:伪终端,通过网络客户端工具或图形终端下开启的命令行终端,都称为伪终端;通常将其标识为"pts",基于网络的远程连接会在/dev/pts目录下生成一个新的设备文件。
SSH的安装配置我们都非常熟悉了,某些情况下,我们会用telnet 用于远程访问服务器。
二、实验环境
操作系统:CentOS7.5 Minimal
telnetServer:192.168.1.103
telnetClient:192.168.1.102
三、telnet服务端和客户端的安装
在telnetServer服务器上
# yum -y install telnet telnet-server
# rpm -ql telnet
# rpm -ql telnet-server
启动telnet服务,设置开机自启
# systemctl start telnet.socket
# systemctl enable telnet.socket
# systemctl status telnet.socket
# cat /usr/lib/systemd/system/telnet.socket
关于更改telnet的默认监听端口
How to change default port number for telnet in Cenots 7.x?
https://www.seei.biz/change-default-port-number-for-telnet-in-cenots-7
https://sharadchhetri.com/2014/12/08/change-telnet-server-port-number-centos-7-rhel-7
# ss -tan | grep 23
设置防火墙,方向相关端口
# firewall-cmd --zone=public --add-port=23/tcp --permanent
# firewall-cmd --reload
在telnetClient服务器
# yum -y install telnet
# rpm -ql telnet
三、从telnetClient测试telnetServer服务器
在telnetClient服务器
从客户端测试服务端端口开放
# telnet 192.168.1.103 22
# echo "" | telnet 192.168.1.103 22
# telnet 192.168.1.103 11
# echo "" | telnet 192.168.1.103 11
从客户端测试登录服务端
# telnet 192.168.1.103
用服务端Michael用户登录服务端,然后切到root用户
# telnet 192.168.1.103
用服务端root用户登录,失败
C/S结构的程序,默认情况下不允许管理员直接实施远程登录,如果想使用root用户,则需要用其他用户登录后使用su命令进行切换。
如果要临时使用,如何开启telnet服务,并允许root用户登录?
如果需要临时使用root用户telnet登录,以下两种方法任选一种
方式一
将服务端/etc/securetty文件备份重命名
# mv /etc/securetty /etc/securetty.bak
方式二
修改/etc/pam.d/login这个文件,注释如下一行
# auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
编辑/etc/securetty文件,增加如下两行
从Windows上在CMD窗口通过telnet远程Linux
五、关闭telnet
# systemctl stop telnet.socket
# systemctl disable telnet.socket
注意:开启telnet的root远程登录极度不安全,账号密码都是明文传输,尤其在公网,所以一般只限于在某些情况下内网中ssh无法使用时,临时调测,使用完后,将相关配置复原,彻底关闭telnet服务!
六、参考
Telnet及SSH
https://www.cnblogs.com/sword03/p/9318640.html
Centos 7 telnet 安装与配置
https://www.jianshu.com/p/42f6443fa717
CentOS / RHEL 7 : How to install and configure telnet
https://www.thegeekdiary.com/centos-rhel-7-how-to-install-and-configure-telnet
toot用户telnet登陆Linux服务器
https://blog.csdn.net/conling_/article/details/53400393
telnet无交互测试端口连通性
https://www.jianshu.com/p/92adf516a62d
How to change default port number for telnet in Cenots 7.x?
https://www.seei.biz/change-default-port-number-for-telnet-in-cenots-7
https://sharadchhetri.com/2014/12/08/change-telnet-server-port-number-centos-7-rhel-7