更改shell后ssh root权限被拒绝

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

首先,我以root身份安装了z-shell(zsh),然后我想将其更改为我的默认shell。 所以我用“chsh”。 我的错是,我输错了路。 通过Putty注销和新的login后,我得到了“访问被拒绝”的消息。

可以预见的是,当shell的path不存在的时候。 所以我login到我的控制面板,并通过filemanager更改了/ etc / passwd文件:我纠正了第一行的错误最后部分 – root用户:

根:X:0:0:根:/根:在/ usr / bin中/ zsh的

即使我将其更改为旧的shell / bin / bash或/ bin / sh,它也不起作用。 我读了密码和阴影是没有活文件,所以我重新启动服务器,但仍然是同样的问题

任何想法,我还能做什么?

操作系统:Debian 5 + Parallels Plesk 11

  1. 始终使用vipw编辑/ etc / passwd,并使用vipw -s编辑/ etc / shadow。
  2. 检查你正在尝试使用的shell是在/ etc / shells中列出的。
  3. 检查/ etc / selinux / config中的SElinux没有设置为“执行”。 将其更改为“宽容”或“禁用”。 [需要重启]
  4. 当你想尝试一个新的shell 不要注销来testing它 。 启动一个额外的 SSH会话或tty,并保持当前的运行状态,以防止发生。
  5. 检查您的日志中是否有与login过程相关的错误,这些错误可能表明还有哪些错误。

如果您仍然无法自行修复,请联系您的托pipe服务提供商。 他们会知道如何在10分钟内修复它,或者你应该find一个更好的主机。

我在另一个论坛find了解决scheme。 对于所有有同样问题的人来说,也许这种方法也可以帮助:

我的提供程序更改了root密码,并尝试使用“chsh -s / bin / bash root”,因为密码未被接受,并且发生以下错误:“chsh:PAM authentication failed”。

dave_mystic给出了解决scheme:

真正的问题在/etc/pam.d/chsh中。 在那个文件中,防止用户在分配了一个特殊的shell之后变回到一个普通的shell的那一行出现在授权从根的所有更改的行之前。

不幸的是,下面这行是第一次触发,不允许更改,因为用户shell不在可用shell列表中。 我通过sudo“root”的授权行从未被解雇,因为在第一行开始之后,它从未被检查过。

auth需要pam_shells.so

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

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

所以我评论了所提到的线,之后,我能够改变壳。