## OpenWrt的ssh无法登陆问题Permission denied, please try again.解决

## 一、情况描述：

​		我根据B站的博主提供的[教程](https://www.bilibili.com/video/BV1114y1X7TA/?spm_id_from=333.337.search-card.all.click&vd_source=926e07668711afad2745ecb7dc75a3d1)对红米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
```

