openwrt下让telnetl与ssh(dropbear)共存

来源:互联网 发布:java程序设计pdf百度云 编辑:程序博客网 时间:2024/05/02 04:29


感谢文字作者,标注转载出处:http://www.07net01.com/2015/07/884509.html

我使用的CC15.05   原创作者的版本我不清楚

当前状况
openwrt中默认用户名为root,但是默认是没有密码的,所以ssh默认不开启,但是telnet是在无密码情况下使用的,当设置了root的密码,则ssh开启,telnet关闭。而ssh的方便性又大于telnet,telnet在产品产测的情况下又要使用,所以有没有什么方法可以让二者共存呢?

步骤一
修改/etc/init.d/telnet自启动脚本,删除对密码和ssh相关的判断,如下注释

start() {# if ( ! has_ssh_pubkey && \# ! has_root_pwd /etc/passwd && ! has_root_pwd /etc/shadow ) || \# ( ! /etc/init.d/dropbear enabled 2> /dev/null && ! /etc/init.d/sshd enabled 2> /dev/null );# then service_start /usr/sbin/telnetd -l /bin/login.sh# fi}

/////******************CC15.05版本****************************////////

start_service() {
#    if ( ! has_ssh_pubkey && \
#         ! has_root_pwd /etc/passwd && ! has_root_pwd /etc/shadow ) || \
#       ( ! /etc/init.d/dropbear enabled 2> /dev/null && ! /etc/init.d/sshd enabled 2> /dev/null );
#    then
        procd_open_instance
        procd_set_param command "$PROG" -F -l /bin/login.sh
        procd_close_instance
#    fi
}

/////****************CC15.05***************************////////

这样在执行/etc/init.d/telnet restart就可以启动telnet了,但是会发现连接的时候提示Login faild

步骤二
上面的连接错误提示是出现在/bin/login.sh脚本中,打开这个文件,删除相关的判断即可。最后就留一行exec那行。
如果需要连接telnet时登录用户名密码,就把最后一行修改成下面  exec /bin/login

/////****************CC15.05修改如下************************////////

#!/bin/sh
# Copyright (C) 2006-2011 OpenWrt.org

#if ( ! grep -qsE '^root:[!x]?:' /etc/shadow || \
#     ! grep -qsE '^root:[!x]?:' /etc/passwd ) && \
#   [ -z "$FAILSAFE" ]
#then
#    echo "Login failed."
#    exit 0
#else
#cat << EOF
# === IMPORTANT ============================
#  Use 'passwd' to set your login password
#  this will disable telnet and enable SSH
# ------------------------------------------
#EOF
#fi

exec /bin/ash --login

/////****************CC15.05***************************////////


另外,默认让固件默认启用ssh,设置固件的默认密码方法看博文:
http://blog.csdn.net/jk110333/article/details/8814675


0 0