sshd:设置“UsePAM no”有什么实际效果

Mar*_*ter 16 login ssh pam sshd

在 中/etc/ssh/sshd_config,PAM 在 Debian 10 上默认启用:

UsePAM yes
Run Code Online (Sandbox Code Playgroud)

在我不想允许使用密码或 kerberos 登录,而只想允许 SSH 密钥身份验证的情况下,PAM在 sshd 中启用它还有什么优势吗?UsePAM或者,如果设置为“否” ,它会简化流程并可能使其更安全吗?

在 sshd 中禁用 PAM 会产生什么实际影响?我会注意到有什么不同吗?

Her*_*ann 6

联机帮助页解释UsePAM不仅提供身份验证,还提供会话处理。有很多PAM 模块提供了广泛的功能,包括自动密钥环解锁、安装文件系统、解密私有数据、有选择地允许登录、\xe2\x80\xa6

\n

在古代,当UsePAM设置为“yes”时,sshd 需要 root 权限。根据用例,以非 root 用户身份运行可能有助于安全或配置。

\n

我可以想象在某些情况下这会派上用场。例如,git 使用 ssh 作为传输协议。我可能想设置一个 git 服务器,但我根本不想通过 PAM 管理 git 用户。

\n


小智 6

与手册页(和另一个答案)声称的相反,UsePAM yes不仅允许您以非 root 用户身份运行 sshd,还允许以非 root 用户身份运行 sshd 来执行密码身份验证(对于其运行的同一用户)通过 setuid/sbin/unix_chkpwd程序。

后者是相当出乎意料的。

user$ /usr/sbin/sshd -f /dev/null -p 9009 -h ~/.ssh/id_rsa
user$ /usr/sbin/sshd -f /dev/null -o UsePAM=yes -p 7007 -h ~/.ssh/id_rsa

user$ ssh -p 7007 localhost
The authenticity of host '[localhost]:7007 ([::1]:7007)' can't be established.
...
Password: <correct password>
Linux deb11 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64
...
user$  <I'm logged in!>
user$ ^D
Connection to localhost closed.


user$ ssh -p 9009 localhost
The authenticity of host '[localhost]:9009 ([::1]:9009)' can't be established.
...
user@localhost's password:
Permission denied, please try again.
user@localhost's password:
Permission denied, please try again.
user@localhost's password:
user@localhost: Permission denied (publickey,password,keyboard-interactive).
user$
Run Code Online (Sandbox Code Playgroud)