SSHD没有在PATH中显示,但SSH有效吗?


0

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

但问题是,当我这样做时which ssh会给出openssh客户端的位置(usr / bin / ssh)。但是,当我尝试which sshd它什么都不返回,但服务器工作正常,直到现在。为什么会发生这种情况?我该如何解决这个问题?


这似乎很正常。sudo which sshd应该印一些东西。无需修复。
Kamil Maciorowski

@KamilMaciorowski“我的sshd”在我的Ubuntu 16.04和CentOS 6盒子上作为普通用户正常工作。部分解决方法(以root身份)可能是使用find / -type f -executable -name“sshd”
davidgo

@KamilMaciorowski你是对的。没什么值得担心的。但正如davidgo所提到的,它应该也可以在没有root权限的情况下工作
aditya rawat

不,因为SSHD守护程序需要root才能启动,因为它打开了一个“低”端口...而且,它通常用作服务,其确切位置仅与服务定义相关。
xenoid

@xenoid感谢您的帮助。我很清楚。
aditya rawat

Answers:


2

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

那么这些路径可能会有所不同。关键是ssh可执行文件的目录在普通用户中PATH,但sshd可执行文件的目录通常不是(它应该是在roots中PATH)。

你可以自己改变你的(普通用户)PATH,但添加/usr/sbin它不会有太大的好处,因为要么你不能从其中执行文件,要么你将正式执行它们但你将获得许可问题稍后。

没有什么特别的错误,你不应该以这种方式破坏系统。但是,这将使您的命令行共享(选项卡扩展)与您永远不需要作为普通用户运行的可执行文件一起丢失。

这些可执行文件需要root原因。对于sshd其原因有:

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

which sshd什么都不给你,sudo which sshd应该回报什么。这似乎很正常。没有什么可以解决的。


除了她可以由普通用户运行 - 这种做法并不罕见,只需在2222端口启动它
davidgo

@davidgo:'' 可以由普通用户运行''?我希望这是一个自动更正。...但严重的是 - 虽然普通用户可以将套接字绑定到端口#2222,但是运行sshd服务器没有特权呢?它不能为您以外的任何用户设置,甚至无法验证您的密码。我想它可以支持无密码登录,但是用例是什么?
Scott

告诉我,如果我做对了。SSHD是一个守护进程,即系统范围(服务器)服务,因此它很有意义, root PATH而ssh是用户服务(SSH服务器的客户端),所以任何人都可以访问它。
aditya rawat

@adityarawat基本上是的。还有更多像这样的工具。守护与否,它并不重要; 重要的是它们特别适用root于普通用户。
Kamil Maciorowski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.