默认shell错误时如何通过ssh登录

默认shell错误时如何通过ssh登录

我已将默认 root shell 更改为错误的路径。现在的第一行/etc/passwd看起来像下面的字符串:

root:x:0:0:root:/root:/usr/bin/bash

然后我从服务器注销,现在无法通过 root 登录。

服务器上没有其他用户。

我知道,这里有很多愚蠢的错误,但我该如何解决呢?

只能通过 ssh 访问服务器。

更新

这个任务是不可能完成的。我找到了一种以 w​​ww-data 用户身份执行任何命令的方法。如何更改/etc/passwd为非 sudo 用户?

答案1

无法使用 ssh 和无效的 shell 登录。设置无效的 shell 也是使用某些 ssh 服务而不允许用户登录的标准方法(参见例如 git)。因此,如果采用替代方式,许多服务器的安全将面临危险。

同样,访问非 sudoer 帐户也不会帮助您。您已将 root 帐户设置为“不允许登录”的配置。所以不允许你登录。

您需要使用自定义内核参数或某些本地控制台重新启动。

答案2

尝试显式运行 shell 命令

ssh <hostname> /bin/bash 

否则尝试编写一个命令来修复 etc passwd 文件。我相信 shell 可以运行显式命令,并且 run shell 可能只是默认设置。还要检查 ssh 选项,您可能必须选择一些才能使其运行。

相关内容