当我设置 Debian 6 时,我想知道除了我知道密码的 root 之外,哪些用户可以通过 SSH 登录我的系统?
当我安装 Apache 2 时,会创建一个名为 www-data 的用户。该用户是否有权通过 SSH 登录我的系统?但如果 www-data 有一些默认密码,每个人都可以登录,这对我来说似乎不太可能。
在哪里可以找到允许哪些用户通过 SSH 登录我的系统的列表?在 ssh 配置文件中找不到任何内容。
答案1
Paradeepchhetri 并不完全正确。
Debian 未修改的sshd_config
有以下内容:
PubkeyAuthentication yes
PermitEmptyPasswords no
UsePAM yes
因此,通过 ssh 登录仅适用于在 中填充了密码字段/etc/shadow
或在 中具有 ssh 密钥的用户~/.ssh/authorized_keys
。请注意, PubkeyAuthentication
isyes
和 for PermitEmptyPasswords
is 的默认值no
,因此即使删除它们,行为也将是相同的。
在问题示例中,www-data
默认情况下将不允许登录,因为 Debian 的安装程序既不分配密码也不为www-data
.
pam_access
,如果需要,可以使用inAllowUsers
进行更精细的控制。在 Debian 中,强烈鼓励.AllowGroups
sshd_config
UsePAM
答案2
默认情况下,Debian 上的所有用户都允许登录。
您可以通过允许某些用户可以通过编辑/etc/ssh/sshd_config
文件登录来更改它。
正如 sshd_config 的手册页中提到的。
AllowUsers
该关键字后面可以跟一个用户名模式列表,以
空格分隔。如果指定,则仅允许与其中一种模式匹配的用户名登录。仅用户名有效;无法
识别数字用户 ID。默认情况下,允许所有用户登录。如果该模式采用USER@HOST
then 的形式USER
,则HOST
单独检查,从而限制来自特定主机的特定用户的登录。允许/拒绝指令按以下顺序处理:DenyUsers
、AllowUsers
、DenyGroup
和 最后AllowGroups
。
答案3
默认情况下,SSH server
甚至没有安装。您必须先安装该openssh-server
软件包,然后任何人才能通过 SSH 登录。
之后,任何用户都必须通过两项检查:
- SSH认证
- PAM 帐户检查
SSH 身份验证意味着用户必须在 中具有有效的密码,/etc/shadow
或者在目标用户的 .sh 文件中具有具有正确权限的有效 SSH 公钥~/.ssh/authorized_keys
。
手册页中进一步描述了有效密码crypt(3)
,但基本上,如果用户的第二个字段/etc/shadow
以 开头$NUMBER$
,则它可能是有效的,如果是*
或!
,则它是无效的。
PAM 帐户检查基本上意味着该帐户没有过期。您可以使用 来检查chage -l USERNAME
。
据我所知,回答你的问题:
- 只有 root 和您在安装向导期间创建的帐户才能登录新系统
- 否,因为
www-data
有哈希密码*
并且没有~www-data/.ssh/authorized_keys
文件 - 没有单一的列表,因为有多个要求,但为了获得一个想法,您可以尝试运行
grep -v '^[^:]*:[!*]:' /etc/shadow