当build立一个新的服务器,我通常只允许通过密钥authentication,而不是根用户login。 因此,我编辑这样的sshd_config:
我将“PermitRootLogin”更改为“no”,并取消“PasswordAuthentification”的注释并将其设置为“no”。 虽然这工作得很好,我已经检查,发现没有办法只能通过密码login,我想知道为什么一些指南build议将“UsePAM”设置为“否”,而其他指南根本没有提及(从而保持这是“是”)。 似乎没有明确的意见,当切换到唯一身份validation时是否应该更改UsePAM设置。
离开UsePAM的安全含义是什么(“是”),如果有的话?
您保持UsePAM为yes因为当PasswordAuthentication设置为no PAM不调用PAM服务的“auth”部分时:
UsePAM启用可插入的身份validation模块接口。 如果设置为“是”,则除PAM帐户和会话模块处理外,还将使用ChallengeResponseAuthentication和PasswordAuthentication为所有validationtypes启用PAMvalidation。
由于PAM质询响应身份validation通常与密码身份validation具有同等的作用,因此应禁用PasswordAuthentication或ChallengeResponseAuthentication。
如果启用了UsePAM,您将无法以非root用户的身份运行sshd(8)。 默认是“否”。
通过这种方式,PAM可以正确运行accounttypes和sessiontypes,如果您想要根据IP,时间或帐户的其他因素限制对服务的访问权限,这一点非常重要。 此外,如果您想确保用户在login时inheritance某些环境variables,或者禁用SELinux时禁止访问服务器。
当启用PAM但密码validation被禁用时,认为它贯穿所有auth模块是一个常见的谬误。