更改 shell 后 ssh root 访问被拒绝

更改 shell 后 ssh root 访问被拒绝

在我尝试更改服务器 shell 之后,我无法再以 root 身份登录。

首先,我以 root 身份安装了 z-shell (zsh),然后我想将其更改为我的默认 shell。因此我使用了“chsh”。我的错误是,我输入了错误的路径。注销并通过 Putty 重新登录后,我收到消息“访问被拒绝”。

这是可以预见的,当 shell 的路径不存在时。所以我登录到控制面板,并通过文件管理器更改了 /etc/passwd 文件:我更正了第一行错误的最后部分 - root 用户:

根:x:0:0:根:/根:/usr/bin/zsh

即使我将其更改为旧 shell /bin/bash 或 /bin/sh 也不起作用。我读到 passwd 和 shadow 不是活动文件,所以我重新启动了服务器,但问题仍然存在

有什么想法吗?我还能做什么?

操作系统:Debian 5 + Parallels Plesk 11

答案1

  1. 总是用来vipw编辑 /etc/passwd,以及vipw -s编辑 /etc/shadow。
  2. 检查您尝试使用的 shell 是否列在 /etc/shells 中。
  3. 检查 /etc/selinux/config 中的 SElinux 是否未设置为“enforcing”。将其更改为“permissive”或“disabled”。[需要重启]
  4. 当你想尝试一个新的 shell 时不要退出来测试. 启动额外的SSH 会话或 tty,并保持当前会话或 tty 继续运行,以防您搞砸了。
  5. 检查日志中与登录过程相关的错误,这些错误可能表明别的是错的。

如果你仍然无法自行修复,请联系你的托管服务提供商。他们要么知道如何在 10 分钟内修复,要么你应该找到更好的托管商。

答案2

我在另一个论坛上找到了解决方案。对于所有遇到同样问题的人来说,也许这种方法也能有所帮助:

我的提供商更改了 root 密码并尝试了“chsh -s /bin/bash root”,但没有起作用,因为密码不被接受并且出现以下错误:“chsh:PAM 身份验证失败”。

dave_mystic 给出了解决方案:

真正的问题出在 /etc/pam.d/chsh 中。在该文件中,阻止用户在被分配特殊 shell 后切换回正常 shell 的行出现在授权从 root 进行所有更改的行之前。

不幸的是,下面一行先触发,不允许更改,因为用户 shell 不在可用 shell 列表中。我通过 sudo 以“root”身份执行的授权行从未触发,因为第一行触发后从未检查过。

身份验证需要 pam_shells.so

解决方案是暂时注释掉 /etc/pam.d/chsh 中的行,将用户 shell 更改为正确的 shell,然后删除该行中的注释。

来源:http://ubuntuforums.org/showthread.php?t=1702833

因此我注释掉了提到的行,然后我就可以更改 shell 了。

答案3

我的答案来自这里

chsh事实证明,我在尝试打开外壳时太马虎了:

grep peter /etc/passwd
peter:1001:1001::/home/peter:/bin/nash

“nash” 显然应该是“bash”

解决方案是使用 usermod 将其改回来:

sudo usermod --shell /bin/bash peter

然后我就可以再次 ssh 登录了。

相关内容