OpenWrt的ssh无法登陆问题Permission denied, please try again.解决
一、情况描述:
我根据B站的博主提供的教程对红米AC2100路由器进行刷机。最开始刷的Openwrt是可以连接ssh的,后面的升级改进版就无法进入ssh了,具体的错误如下。``
shell
#采用windows的powershell登陆
ssh root@192.168.30.1
root@192.168.30.1's password:
Permission denied, please try again.
# openwrt后台log
Sat Feb 10 01:15:01 2024 authpriv.info dropbear[11072]: Child connection from 192.168.30.247:62748
Sat Feb 10 01:15:01 2024 authpriv.warn dropbear[11072]: User 'root' has invalid shell, rejected
上述问题在于,我输入的密码是对的但是依旧无法登陆。查看etc/passwd
发现密码是正确的。
shell
root:x:0:0:root:/root:/bin/bash
daemon:*:1:1:daemon:/var:/bin/false
ftp:*:55:55:ftp:/home/ftp:/bin/false
network:*:101:101:network:/var:/bin/false
为了解决上述的问题,我调查了好几种原因和解决方案。我遇到的问题是系统目录的etc\shells
文件中没有/bin/bash
,导致的无法登陆。那么其他的原因有:
shell
# 1. etc/passwd换行问题导致 https://blog.csdn.net/railzen/article/details/132835654
# 2. /bin/bash没有加入 https://blog.csdn.net/weixin_33849215/article/details/93449289
二、解决方案
通过OpenWrt的web界面查看文件管理,下载etc\shells
文件。然后发现内容如下:
shell
/bin/ash
/usr/bin/zsh
那么我们加入/bin/bash
到etc\shells
文件中,并通过Web管理界面的文件管理功能上传到OpenWrt上,然后重启路由器。
/bin/bash
/bin/ash
/usr/bin/zsh
在Powershell中输入ssh root@192.168.30.1
,成功进入ssh。
shell
C:\Users\admin>ssh root@192.168.30.1 -p 22
_____
_____________________________ __________ /_
_ __ \__ __ \ _ \_ __ \_ | /| / /_ ___/ __/
/ /_/ /_ /_/ / __/ / / /_ |/ |/ /_ / / /_
\____/_ .___/\___//_/ /_/____/|__/ /_/ \__/
/_/
_________________________________________
OpenWrt 07.12.2023 by Kiddin'
_________________________________________
系统负载: 0.94 0.39 0.14 运行时间: 1 min
内存已用: 46 % of 116MB IP 地址: 192.168.30.1 192.168.1.12