![SSH登录尝试执行不存在的命令](https://linux22.com/image/228921/SSH%E7%99%BB%E5%BD%95%E5%B0%9D%E8%AF%95%E6%89%A7%E8%A1%8C%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9A%84%E5%91%BD%E4%BB%A4.png)
我将服务器从 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 并恢复到升级前的备份:
- 这应该是达到已知良好状态的最可靠路径
- 你不知道腐败仅限于这一行为
- 它应该允许您确认问题是由升级引起的
....但要进一步隔离问题....
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 个月前停产。