linux telnet服务

本文介绍如何在BusyBox中配置和启用Telnet客户端与服务端,包括必要的文件系统设置、设备节点创建及启动脚本修改等步骤。

1.进入busybox源代码目录,选择telnet,telnetd.然后make;make install并制作ramdisk

2.确保在ramdisk的sbin目录下存在inetd和telnetd

3.在ramdisk中的mnt/etc目录中,确保存在文件fstab,service,inetd.conf,passwd 文件

4.确保fstab文件中存在     none /dev/pts devpts mode=0622 0 0 这一行

5.确保services文件中存在  telnet 23/tcp 这一行

6.确保inetd.conf中存在    telnet stream tcp nowait root /sbin/telnetd       telnetd

7.确保passwd文件中存在    root::0:0:root:/:/bin/sh ,表示没有密码的root帐号

8.在kernal的代码中,通过make menuconfig,

在Character devices中选中 Unix98 PTY support

退出后make zImage

9.在BusyBox源码中,通过make menuconfig,选中dev/pts file system for Unix98 PTYs

退出后make;make install

10.在ramdisk的启动文件mnt/etc/init.d/rcS中,在mount –a的后面下一行加入 inetd或者telnet /bin/ash ,使系统启动的时候就加载telnetd服务

另外注意,如果系统的mac地址冲突,会造成系统telnet不能连接,或者时断时续!

 

/***********************************************************************************************************/

 

来源:http://blog.chinaunix.net/u3/108761/showart.php?id=2151302

主机系统: fedora8 + vmware 

目标板: utu2440 / linux-2.6.29.1 
交叉编译器: arm-linux-gcc-3.4.1
软件资源: busybox-1.10.1

 

在根文件系统制作成功的基础上就可以移植 telnetd 到开发板,这样可以在同一局域网的任一台主机上通过 telnet 远程登录到开发板上,而不仅是只能通过串口连接开发板,当然 telnet 采用明文密码,安全性不如 sshd ,这是它的局限性。以下是详细移植步骤:

1 . Busybox 配置

Busybox 中已集成了 telnet client 和 telnetd, 以下是 busybox 中关于 telnet 的配置选项:

Networking Utilities  --->

       [*] telnet

       [*] telnetd

       [*]   Support standalone telnetd (not inetd only)

 

2 .修改 etc/init.d/rcS

telnet client 功能只要选中配置选项就可以了,而 telnetd 需要 devpts ,因此要在启动脚本中开启 devpts 支持及启动 telnetd 。修改后的 etc/init.d/rcS 如下所示:

#!/bin/sh

 

PATH=/sbin:/bin:/usr/sbin:/usr/bin

 

runlevel=S

 

prevlevel=N

 

umask 022

 

export PATH runlevel prevlevel

 

mount -a

 

mkdir /dev/pts

/bin/mknod /dev/pts/0 c 136 0

/bin/mknod /dev/pts/1 c 136 1

/bin/mknod /dev/pts/2 c 136 2

/bin/mknod /dev/pts/3 c 136 3

/bin/mknod /dev/pts/4 c 136 4

/bin/mknod /dev/pts/5 c 136 5

/bin/mount -t devpts devpts /dev/pts

 

echo /sbin/mdev>/proc/sys/kernel/hotplug

 

mdev -s

 

 

/bin/hostname -F /etc/sysconfig/HOSTNAME

 

/sbin/ifconfig lo 127.0.0.1

 

/sbin/ifconfig eth0 192.168.1.168

 

/sbin/route add default gw 192.168.1.1

 

/etc/init.d/ts.sh

 

/usr/sbin/telnetd

 

重新启动开发板后,在主机上 telnet 连接开发板,但 login 登陆时出现如下错误提示:

login: cannot run /bin/bash: No such file or directory

Connection closed by foreign host.

 

在目标板上 ls -l /bin/*sh 发现只有 ash 和 sh,

ln -s /bin/sh /bin/bash 创建一个指向 sh 的软链接 bash ,重启开发板后,再在主机上 telnet 连接开发板, login 时又出现如下错误:

bash: applet not found

Connection closed by foreign host.

 

后来发现是 /etc/passwd 中指定了用户的 shell 为 bash, 而 busybox 只有 ash 和 sh, 将 /etc/passwd 中的 /bin/bash 都改为 /bin/sh 后问题解决。

telnet 登陆时串口终端显示:

[root@liuzg]# login[966]: root login on 'pts/0'

### 如何在Linux系统上配置和使用Telnet服务器 #### 配置Telnet服务器 为了在Linux系统上启用Telnet服务,需要执行一系列操作来安装、配置并启动该服务。以下是具体的实现过程: 1. **安装Telnet软件包** 安装所需的Telnet服务器软件包通常是第一步。可以使用`yum`或`apt-get`工具根据操作系统版本进行安装。 ```bash sudo yum install telnet-server xinetd # 对于基于RHEL/CentOS的系统 sudo apt-get install telnetd # 对于基于Debian/Ubuntu的系统 ``` 2. **编辑防火墙规则** 修改防火墙配置文件以允许通过23端口访问Telnet服务。这可以通过编辑`iptables`规则来完成。 使用以下命令添加新的规则: ```bash vi /etc/sysconfig/iptables ``` 添加如下内容以开启TCP和UDP的23端口: ```plaintext -A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 23 -j ACCEPT ``` 接着重启防火墙使更改生效: ```bash service iptables restart ``` 3. **启动xinetd服务** Telnet通常依赖于`xinetd`守护进程运行。因此,需确保此服务已正确安装并处于活动状态。 启动`xinetd`服务并通过以下命令验证其状态: ```bash service xinetd start chkconfig xinetd on ``` 4. **测试Telnet连接** 测试阶段非常重要,可从另一台机器发起连接请求确认一切正常工作。例如,在Windows客户端中尝试建立连接: ```bash telnet <Linux_Server_IP> ``` 如果成功,则表示已经能够通过Telnet协议远程管理目标设备。 #### 使用注意事项 尽管上述步骤描述了如何设置基本功能完整的Telnet环境,但由于其传输数据未加密特性存在安全隐患[^1],建议仅限内部网络环境下谨慎部署此类解决方案;对于生产环境中推荐优先考虑SSH作为替代方案因其具备更高安全性保障措施[^2]。 ```python # Python脚本示例用于自动化部分配置流程(仅供参考) import os def configure_telnet(): try: os.system('sudo yum install telnet-server xinetd') with open('/etc/sysconfig/iptables', 'a') as f: f.write('-A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT\n') f.write('-A INPUT -m state --state NEW -m udp -p udp --dport 23 -j ACCEPT\n') os.system('service iptables restart') os.system('service xinetd start && chkconfig xinetd on') print("Telnet server configured successfully.") except Exception as e: print(f"An error occurred: {e}") configure_telnet() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值