SSH登录尝试执行不存在的命令

SSH登录尝试执行不存在的命令

我将服务器从 Debian 9 升级到 10,在下次 SSH 登录时重新启动后,出现以下错误:

-bash: root:x:0:0:root:/root:/bin/bash: No such file or directory
-bash: daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin: No such file or directory
-bash: bin:x:2:2:bin:/bin:/usr/sbin/nologin: No such file or directory
-bash: sys:x:3:3:sys:/dev:/usr/sbin/nologin: No such file or directory
-bash: sync:x:4:65534:sync:/bin:/bin/sync: No such file or directory
-bash: games:x:5:60:games:/usr/games:/usr/sbin/nologin: No such file or directory
-bash: man:x:6:12:man:/var/cache/man:/usr/sbin/nologin: No such file or directory
-bash: lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin: No such file or directory
-bash: mail:x:8:8:mail:/var/mail:/usr/sbin/nologin: No such file or directory
-bash: news:x:9:9:news:/var/spool/news:/usr/sbin/nologin: No such file or directory

看起来有些东西在某处被损坏,因为那些看起来像是 /etc/passwd 中的内容并且内容被执行。

当打开一个可以尝试执行上述操作的会话时,ssh 登录会做什么?我检查了 /etc/profile ,一切看起来都很标准,我尝试删除我的 ~/.bashrc 但没有任何变化。

任何帮助表示赞赏。多谢。

答案1

是的,它正在尝试执行 /etc/passwd或其副本

实际上,第一个操作是对磁盘进行 fsck 并恢复到升级前的备份:

  1. 这应该是达到已知良好状态的最可靠路径
  2. 你不知道腐败仅限于这一行为
  3. 它应该允许您确认问题是由升级引起的

....但要进一步隔离问题....

sshd/ssh 不执行 shell 以外的任何内容(在本例中为 bash)。 shell 将在启动时执行各种文件,具体取决于它的调用方式 - 请参阅@Vilinkameni 评论中的链接。

我没有方便检查的 Debian 9 或 10 主机,但 /etc/profile 中的默认脚本通常会运行 /etc/profile.d/ 中的每个脚本,因此将其添加到您应该做的事情列表中正在检查。

检测 /etc/profile 将允许您查看操作链中何处发生了错误行为。您在上面看到的内容正在写入 STDERR - 您的代码也应该写入那里(stdout 和 stderr 不一定同步):

echo "DEBUG: $BASH_SOURCE[0] : $LINENO" >&2

Debian 10 已于 6 个多月前停产,Debian 9 已于 20 个月前停产。

相关内容