linux ssh 服务报错

自己编译移植了ssh服务到开发板上,但是启动错误

img

提示没有用户0,但是root用户是存在的

img


sshd启动会报错:Privilege separation user sshd does not exist(在网上能找到的办法都试了,感觉这个不是根本问题,ssh,scp找不到用户应该才是根本问题,这个问题应该和前两个一样是找不到用户导致的)

并且同样的方法编译openssh到我的其他开发板是可以正常启动的,
目前感觉就是系统应用查找不到用户的存在导致的,怀疑文件系统的配置有问题。

尝试一下下面的方法:

add following line in /etc/passwd 

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 

其中/var/empty/sshd修改为你自己的sshd所在目录,默认一般是/usr/local/sbin/sshd

这种方法试了吗?


修改/etc/ssh/sshd_config文件
将其中
UsePrivilegeSeparation yes
修改为
UsePrivilegeSeparation no

这个问题可能是由于编译和安装 SSH 时没有正确配置用户和权限导致的。你可以尝试以下步骤来解决问题:

1.检查 /etc/passwd 和 /etc/shadow 文件是否存在并且用户0和sshd用户是否存在。
2.检查 SSH 配置文件 /etc/ssh/sshd_config 中是否正确配置了用户和权限。
3.检查编译 SSH 时是否使用了正确的用户和权限配置。
4.检查文件系统是否正确配置,确保没有权限问题。
5.检查内核配置是否正确,确保没有权限问题。
可能你需要重新编译ssh和内核.

望采纳。

这个错误的原因很可能是因为编译后的ssh服务程序无法找到用户"sshd"。在系统中配置了sshd用户,并且该用户具有所需的权限。

您可以尝试以下步骤来解决这个问题:

  1. 确保在系统中已经存在了用户"sshd"并且具有所需的权限。

  2. 检查/etc/passwd和/etc/shadow文件确保sshd用户存在且没有被锁定。

  3. 检查/etc/group文件确保sshd用户存在于sshd组中

  4. 重新编译openssh时,确保您已经指定了正确的用户和组,并且该用户和组在系统中存在。

  5. 检查并更新系统中的文件系统配置,确保正确。

  6. 你可以尝试使用已经在其他开发板上正常运行的openssh程序来替换

  7. 检查系统日志,以查看是否有其他相关的错误信息。

  8. 检查sshd配置文件/etc/ssh/sshd_config,确保配置是正确的,特别是User和Group的配置。

  9. 可以尝试使用strace工具查看sshd进程启动时的系统调用,以了解更多关于错误的信息。

总之,这个问题很可能是由于系统配置或编译配置问题导致的。请确保您按照上述步骤进行了
希望对你有帮助,望采纳。

既然怀疑系统应用查找不到用户导致的,那就可以往这个方面去入手了,查找对应添加用户的方案去尝试了。
以下我提供一个能够添加配置用户的方案,题主你试一下,若有帮助,还望采纳,点击回答右侧采纳即可。
进入linux,创建用户组:

groupadd qhsx

创建用户:

useradd -g ejjdroot qhsx

设置或修改用户密码:

sudo ejjdroot
passwd ejjdroot

提示输入密码,并输入密码
配置ssh远程连接:
修改/etc/ssh/sshd_config文件:

vim /etc/ssh/sshd_config

在文件结尾处添加:AllowUsers 用户名称(此处注意有需要的话将原来的root用户也加上,否则,会SSH对root访问拒绝)
保存退出(wq!)
重启SSH服务:

service sshd restart

其实,这个会不会是权限的问题?

你整合ssh到开发版,你写入开发版的时候,有没有看下开发版对这块的需求或设置?

其次,你整合的ssh,有没有阉割功能或调整功能,这个也是一个问题所在,

你要知道,不同版本的ssh,有可能对不同的环境有不同的处理,这就会导致这样那样的问题产生。