如何在 Linux 中使用 telnet 命令?

1. 写在前面

telnet(teletype network)利用 telnet 网络协议连接远程主机,并通过 TCP/IP 网络对其进行管理。该协议使用 23 端口建立连接,提供了一种使用 CLI 命令行管理远程系统的方法。尽管 telnet 与 SSH 类似,但两者还是有区别的,因为 SSH 使用加密技术,安全性更高。

本文主要介绍在 Linux 中使用 telnet 命令。

2. Linux 发行版安装 Telnet

根据 Linux 发行版,选择对应 telnet 安装方式。

2.1 CentOS、Fedora 和 RHEL

CentOS、Fedora 和 RHEL 使用 yum 作为软件包管理器,按照以下步骤安装:

(1)更新系统软件包库,以确保安装最新版本:

sudo yum update

(2)安装 telnet 及其正常运行所需依赖包:

sudo yum install telnet telnet-server -y

该命令将安装 telnet 、 telnet-server 两个软件包。

(3)运行 telnet 服务并启用:

systemctl start telnet.socket
systemctl enable telnet.socket

(4)设置远程主机防火墙允许 telnet 端口(默认端口为 23):

sudo firewall-cmd --permanent --add-port=23/tcp

(5)重新加载防火墙,应用更改:

sudo firewall-cmd --reload

2.2 基于 Ubuntu 和 Debian 发行版

Ubuntu 和其他基于 Debian 的发行版默认使用 apt 软件包管理器,按照以下步骤安装:

(1)更新系统软件包库:

sudo apt update

(2)安装 telnet:

sudo apt install telnetd -y

安装完成,服务自动启动。

(3)检查 telnet 是否已正确安装:

root@dev:~# sudo systemctl status inetd
-------------------------------------------------------------------------------
● inetd.service - Internet superserver
Loaded: loaded (/lib/systemd/system/inetd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-01-15 23:43:55 CST; 11s ago
Docs: man:inetd(8)
Main PID: 85792 (inetd)
Tasks: 1 (limit: 19155)
Memory: 844.0K
CGroup: /system.slice/inetd.service
└─85792 /usr/sbin/inetd

Jan 15 23:43:55 dev systemd[1]: Starting Internet superserver...
Jan 15 23:43:55 dev systemd[1]: Started Internet superserver.

显示守护进程已启动并正在运行。

(4)远程主机运行防火墙,允许端口 23 接入:

root@dev2:~# sudo ufw allow 23/tcp
--------------------------------------------------------------------------------------
Rules updated
Rules updated (v6)

(5)重新加载防火墙:

sudo ufw reload

或:

sudo systemctl stop ufw
sudo systemctl start ufw

检查状态:

root@dev2:~# systemctl status ufw
--------------------------------------------------------------------------------------
● ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2024-01-15 23:49:11 CST; 58s ago
Docs: man:ufw(8)
Process: 29438 ExecStop=/lib/ufw/ufw-init stop (code=exited, status=0/SUCCESS)
Process: 29462 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SUCCESS)
Main PID: 29462 (code=exited, status=0/SUCCESS)

Jan 15 23:49:11 dev2 systemd[1]: Starting Uncomplicated firewall...
Jan 15 23:49:11 dev2 systemd[1]: Started Uncomplicated firewall.

注意:上述命令适用于 ufw 防火墙,如果使用的是其他防火墙,需按照特定程序的说明操作。

3. 如何在 Linux 中使用 telnet

使用 telnet 的一个重要前提是本地和远程主机都安装了 telnet,并且远程主机的防火墙允许使用默认端口 23。

语法:

telnet [options] [remote_server_address] [port]
  • [options]和[port]: 可选参数;

  • [remote_server_address]: 远程主机地址;

不带选项或不指定地址的情况下运行命令,将打开 telnet 交互模式:

root@dev:~# telnet
--------------------------------------------------------------------------------------
telnet>

使用交互式 shell 连接远程主机,显示连接状态等信息。

退出 telnetquit

以下小节提供常用 telnet 用例。

3.1 检查端口是否打开

尽管 telnet 不是建立远程连接的安全选项,但却是检查远程主机上特定端口是否开放的好方法。通过在命令中指定端口号,检查某个端口是否正在应答任何请求,这样可查看网络中的情况以及端口是否响应。

语法:

telnet [server_address] [port]

不指定端口号,默认端口 23。

示例:

  • 检查远程主机 22 端口是否开放:

root@dev:~# telnet bing.com 22
--------------------------------------------------------------------------------------
Trying 13.107.21.200...
Trying 204.79.197.200...
Trying 2620:1ec:c11::200...
telnet: Unable to connect to remote host: Network is unreachable

连接中断,意味指定端口未打开。

  • 检查远程主机 80 端口是否开放:

root@dev:~# telnet bing.com 80
--------------------------------------------------------------------------------------
Trying 13.107.21.200...
Connected to bing.com.
Escape character is '^]'.

连接已建立,端口已打开。

3.2 下载网页

telnet 允许连接远程主机 80 端口,并将 HTML 源码下载到本地。

示例:

  • 连接到 bing.com 的 80 端口:

root@dev:~# telnet bing.com 80
--------------------------------------------------------------------------------------
Trying 204.79.197.200...
Connected to bing.com.
Escape character is '^]'.
  • 建立连接后,运行以下命令下载 HTML 网页:

GET /index.html

root@dev:~# telnet bing.com 80
--------------------------------------------------------------------------------------
Trying 204.79.197.200...
Connected to bing.com.
Escape character is '^]'.
--------------------------------------------------------------------------------------
GET /index.html
--------------------------------------------------------------------------------------
<h2>Our services aren't available right now</h2><p>We're working to restore all services as soon as possible. Please check back soon.</p>0jlmlZQAAAADsAo2T+s50TKTnLf0yrjRqU0lOMzBFREdFMDExNwBFZGdlConnection closed by foreign host.

不过这里显示远程主机不允许下载。

3.3 测试 SMTP 通信

telnet 另一个有用功能是允许用户通过命令行直接发送电子邮件来测试 SMTP 端口,前提需要一个不需要身份验证的电子邮件服务器,这是排除电子邮件客户端故障的好方法。

以下步骤使用 telnet 发送电子邮件:

(1) 通过 SMTP 端口连接服务器:

telnet [server_address] [port]
  • [server_address] 指定 SMTP 服务器地址。例如,Gmail 是 smtp.gmail.com

  • SMTP [port] 可以是 25、465、587 等,具体取决于提供商;

(2) 用 HELO 或 EHLO 向服务器问好:

HELO [your_IP_address]

(3) 指定发件人:

MAIL FROM: <your_email_address@domain.com>

(4) 指定收件人:

RCPT TO: <recipient_address@domail.com>

(5) 指定邮件主题和正文,中间用空行隔开:

SUBJECT: This is the email subject.
""
This is the email body.

注意:大多数邮件服务器都会标记未经请求的匿名邮件,这意味着它可能最终会进入垃圾邮件文件夹。

3.4 连接远程系统

使用 telnet 进行远程连接(尽管缺乏安全性)。

telnet [remote_machine_IP]

确保在两台机器上都安装 telnet,并设置防火墙允许 23 端口(开启或禁用ufw防火墙:sudo ufw enable/disable/reload)。

root@dev:~# sudo ufw allow 23/tcp
--------------------------------------------------------------------------------------
Rule added
Rule added (v6)


root@dev:~# sudo ufw reload
--------------------------------------------------------------------------------------
Firewall reloaded

如下,出现提示时,输入用户名和密码登录系统。登录后,即可远程操作另一台机器:

root@dev:~# telnet 10.100.0.111
--------------------------------------------------------------------------------------
Trying 10.100.0.111...
Connected to 10.100.0.111.
Escape character is '^]'.
Ubuntu 20.04.6 LTS
dev login: dev
Password:
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-169-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
... ...

建立连接后,可远程操作主机与 SSH 类似。 

4 结论

本文介绍了如何在 Linux 中使用 telnet 命令。虽然该命令的安全性较差,而且不建议用于远程连接,但它的其他用途还是很有用的。

感谢您花时间阅读文章!

收藏本站不迷路!

原文始发于微信公众号(滑翔的纸飞机):如何在 Linux 中使用 telnet 命令?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/260846.html

(0)
土豆大侠的头像土豆大侠

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!