SSHD 没有显示在 PATH 中,但是 SSH 显示了?

SSHD 没有显示在 PATH 中,但是 SSH 显示了?

我目前正在用 Python 开发 ssh 协议,我浪费了大量时间来启动 openssh 服务器。之后,我能够启动它并正常运行我的 Python 脚本。两者都没有权限问题。

但问题是,当我which ssh这样做时,它会给出 openssh 客户端的位置 (usr/bin/ssh)。但当我尝试时,which sshd它什么也没有返回,但到目前为止服务器运行正常。为什么会发生这种情况?我该如何解决这个问题?

答案1

ssh通常意味着由任何人运行,sshd并不意味着由普通用户调用;因此前者(例如)在 中/usr/bin,而后者在 中/usr/sbin

好吧,这些路径可能会有所不同。重点是ssh可执行文件的目录位于普通用户的 中PATH,但可执行文件的目录sshd通常不在 中(尽管它应该在rootPATH)。

PATH您可以自行更改您的(普通用户)权限,但/usr/sbin添加权限不会有太大作用,因为您要么无法从其中执行文件,要么虽然您正式能够执行它们,但稍后会遇到权限问题。

这没什么特别的错,你不应该以这种方式破坏系统。然而,这会将你的命令行填满(制表符扩展),其中包含你永远不需要以普通用户身份运行的可执行文件。

需要这些可执行文件是root有原因的。sshd原因如下:

  • 它被设计为一个系统范围的服务,一个守护进程;在系统启动时启动,即使没有用户登录;让其他用户进入系统;
  • 它经常打开一个“低”端口,普通用户很少被允许这样做。

which sshd不会返回任何内容,sudo which sshd应该返回一些内容。这似乎很正常。没有什么需要修复的。

相关内容