Mqtt MOSQUITO在打开端口时声明错误权限被拒绝

Mqtt MOSQUITO在打开端口时声明错误权限被拒绝,mqtt,mosquitto,Mqtt,Mosquitto,我有一个运行在EC2Linux实例上的Mosquitto代理。当我尝试在端口设置为1883的情况下启动MOSQUITO时,它工作正常,但当我尝试在端口443上启动它时,它会显示“打开ipv4端口443”,然后下一行是“错误:权限被拒绝”。我在实例中打开了该端口。我找不到有关此特定错误的任何信息。在Linux和UNIX计算机上,1024以下的端口受到限制,因此只有以root身份运行的进程才能侦听这些端口。如果您的进程不是以root用户身份运行,则当它尝试在该端口或1024以下的任何其他端口上侦听时

我有一个运行在EC2Linux实例上的Mosquitto代理。当我尝试在端口设置为1883的情况下启动MOSQUITO时,它工作正常,但当我尝试在端口443上启动它时,它会显示“打开ipv4端口443”,然后下一行是“错误:权限被拒绝”。我在实例中打开了该端口。我找不到有关此特定错误的任何信息。

在Linux和UNIX计算机上,1024以下的端口受到限制,因此只有以root身份运行的进程才能侦听这些端口。如果您的进程不是以root用户身份运行,则当它尝试在该端口或1024以下的任何其他端口上侦听时,将出现“权限被拒绝”错误

这是按照约定完成的,以确保运行在已知端口上的服务器只能由具有计算机管理权限的人启动。这可以防止多用户系统上的普通用户启动恶意服务器,假装系统上的正式服务器

如果必须使用1024以下的端口,则可以确认这是问题所在,方法是确保在以root用户身份运行时启动服务器

对于生产系统来说,以root用户身份运行服务器不是一个很好的选择。必须侦听特权端口的服务器通常以root用户身份启动,打开端口,然后通过将其userid更改为特定于服务器的非root用户来降级其权限。然后,如果远程攻击者设法利用服务器中的漏洞,则与以root身份运行服务器相比,他们对系统的访问权限将减少

如果以root用户身份运行Mosquite,请确保使用mosquitto.conf中的用户选项设置mosquitto启动后应切换到的用户名


顺便说一句,443是运行MQTT代理的一个特殊选择,因为它是HTTPS使用的端口。

443对于带有TLS的websockets上的MQTT来说并不是那么糟糕,感谢您的帮助和完整的解释。这正是答案。