我目前正在用 Python 开发 ssh 协议,我浪费了大量时间来启动 openssh 服务器。之后,我能够启动它并正常运行我的 Python 脚本。两者都没有权限问题。
但问题是,当我which ssh
这样做时,它会给出 openssh 客户端的位置 (usr/bin/ssh)。但当我尝试时,which sshd
它什么也没有返回,但到目前为止服务器运行正常。为什么会发生这种情况?我该如何解决这个问题?
答案1
ssh
通常意味着由任何人运行,sshd
并不意味着由普通用户调用;因此前者(例如)在 中/usr/bin
,而后者在 中/usr/sbin
。
好吧,这些路径可能会有所不同。重点是ssh
可执行文件的目录位于普通用户的 中PATH
,但可执行文件的目录sshd
通常不在 中(尽管它应该在root
中PATH
)。
PATH
您可以自行更改您的(普通用户)权限,但/usr/sbin
添加权限不会有太大作用,因为您要么无法从其中执行文件,要么虽然您正式能够执行它们,但稍后会遇到权限问题。
这没什么特别的错,你不应该以这种方式破坏系统。然而,这会将你的命令行填满(制表符扩展),其中包含你永远不需要以普通用户身份运行的可执行文件。
需要这些可执行文件是root
有原因的。sshd
原因如下:
- 它被设计为一个系统范围的服务,一个守护进程;在系统启动时启动,即使没有用户登录;让其他用户进入系统;
- 它经常打开一个“低”端口,普通用户很少被允许这样做。
which sshd
不会返回任何内容,sudo which sshd
应该返回一些内容。这似乎很正常。没有什么需要修复的。