搭建 Telnet 服务器
在这一步中,我们将在 LabEx 虚拟机上搭建一个 Telnet 服务器。Telnet 是一种网络协议,用于通过虚拟终端连接提供双向交互式的面向文本的通信功能。虽然由于 Telnet 缺乏加密,通常被认为不安全,但在像我们的 LabEx 虚拟机这样的受控环境中,它可用于测试和演示目的。
由于 LabEx 虚拟机使用 Docker 容器,我们不能直接使用 systemctl
来管理服务。相反,我们将使用 xinetd
来管理 Telnet 服务。xinetd
(扩展 Internet 守护进程)是一个超级服务器守护进程,它监听传入的网络连接并启动相应的服务。
首先,让我们安装 telnetd
和 xinetd
软件包。在 LabEx 虚拟机中打开终端并执行以下命令:
sudo apt update
sudo apt install telnetd xinetd -y
此命令更新软件包列表并安装 telnetd
(Telnet 服务器守护进程)和 xinetd
软件包。-y
标志会在安装过程中自动对任何提示回答“yes”。
接下来,我们需要配置 xinetd
来管理 Telnet 服务。在 /etc/xinetd.d/
目录中为 Telnet 创建一个配置文件。使用 nano
来创建和编辑该文件:
sudo nano /etc/xinetd.d/telnet
将以下配置粘贴到 nano
编辑器中:
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
此配置告诉 xinetd
监听 Telnet 连接,以 root 用户身份运行 /usr/sbin/in.telnetd
服务器,并记录连接失败信息。disable = no
确保该服务已启用。
按 Ctrl+X
,然后按 Y
,再按 Enter
保存文件并退出 nano
。
现在,重启 xinetd
服务以应用更改。由于我们不能使用 systemctl
,我们将通过向 xinetd
进程发送 HUP 信号来解决这个问题。首先,查找 xinetd
的进程 ID:
ps -ef | grep xinetd
你应该会看到类似以下的输出:
root 1234 1 0 10:00 ? 00:00:00 /usr/sbin/xinetd -stayalive -pidfile /run/xinetd.pid
labex 5678 5600 0 10:01 pts/0 00:00:00 grep --color=auto xinetd
记下 xinetd
的进程 ID(在这个例子中是 1234
)。在以下命令中,将 1234
替换为你实际输出中的进程 ID:
sudo kill -HUP 1234
此命令向 xinetd
进程发送 HUP 信号,使其重新加载配置。
最后,让我们验证 Telnet 服务器是否正在运行。你可以使用 telnet
命令从同一台机器尝试连接到它。由于 telnet
客户端可能默认未安装,我们将使用 netcat
来测试连接。
nc localhost 23
如果 Telnet 服务器正在运行,你应该会看到一个空白屏幕或 Telnet 提示符。然后,你可以通过输入 Ctrl+]
再输入 quit
来关闭连接。如果你收到“Connection refused”,请仔细检查上述步骤。