记一次离奇的linux-ssh登录bug | XYZ
Post

记一次离奇的linux-ssh登录bug

遇到了一个脑瘫错误,查了半天查到一样的问题

sudo su command not working su: failed to execute root: No such file or directory

目前已根据文档中提到的方法解决,即修改/etc/passwd文件中的root:x:0:0:root:/root:root。当然,在我的问题里,这个错误行是root:x:0:0:root:/root:myusername

具体是什么原因引起的已经不可追溯了,推测与我想修改新用户的shell时执行的一些操作有关,例如chsh相关操作。

实际上这个问题并不是我在切换用户时发现的,而是连接ssh时突然连不上了,报错belike:

1
2
3
[16:40:45.445] Got some output, clearing connection timeout
[16:40:45.642] > root@xxxhost: Permission denied (publickey).
[16:40:45.663] > 过程试图写入的管道不存在。

还好此时我还有一个vscode窗口是连着这个服务器的root账号的,真是吓出一身冷汗,立刻开始搜索办法。结果当然是五花八门,笔者大量使用sudoedit /etc/ssh/sshd_config来修改ssh设定,依旧没有任何用处,期间还检查了.ssh下的公钥,也都是正确的。

所以说debug是非常看运气的,主要这个环节的报错是Permission denied (publickey),可以说相当具有迷惑性了,想到切换用户也只是病急乱投医地碰运气,思路是回溯出错环节->之前设置新用户相关时,发现切换用户需要密码,因此重设了root密码->想着再切换一次用户(这个思路是多么离奇,正常来说是完全无用的行为)->发现切不回去了->发现事情真相……

是的,聪明的你已经发现了,最终错因与重设root密码这一操作完全没有关系,这就是debug的魅力,即毫无方法论,除非你有很强的知识储备。然而知识不就是在无数次没头脑的debug中学习的吗?

另,补充修改系统文件的命令:

1
sudo nano /etc/passwd

或:

1
sudoedit /etc/passwd

编辑完成后,ctrl+X保存退出。

有时修改前也要注意备份,养成好习惯:

1
sudo cp /etc/passwd /etc/passwd.bak
This post is licensed under CC BY 4.0 by the author.