无密码 SSH 的含义是什么

2 password ssh

如果 UNIX 用户通过 SSH 访问服务器,而我们只想允许公钥登录,那么是否还有其他需要添加到此列表中的项目,我应该关注?

  1. 允许pubkey loginsshd_config服务器上的文件中。
  2. 默认密码的注意事项,例如“!” “*”

0xC*_*22L 8

最好告诉您需要什么 SSH 服务器以及什么(一组)Unix 系统。

!并且*当您在/etc/passwdor 中看到它们时不是密码/etc/shadow(用于getent阅读这些条目)。

它们是表示帐户是否有密码以及是否被锁定的标记。

这是一个重要的区别,取决于 PAM 的配置和版本以及发行版,如果您使用的是 Linux。如果锁定,则不太可能允许您登录,但另一方面,它可能在旧系统上开箱即用(至少这是我的经验)。

您可以使用(作为超级用户)passwd -l <name>来锁定帐户 ( !) 或passwd -d <name>从中删除密码 ( *),您也可以将两者结合使用,这将确保删除任何现有密码:passwd -dl <name>

你不说,但假设 OpenSSH 中的相关指令/etc/ssh/sshd_config(路径可能会有所不同)是:

HostKey ...
Run Code Online (Sandbox Code Playgroud)

服务器必须有一个主机密钥或 RSA2 或 DSA(更现代的实现也添加了两个椭圆曲线实现)。RSA1 早已被所有常见的 SSH 服务器实现所放弃。

然后:

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)

我也总是建议设置/etc/sudoers并完全禁止root通过 SSH ( PermitRootLogin no)登录。但是,这种更安全的设置可能有一个小缺点,当磁盘已满并且您的非特权sudo成员无法写入磁盘时,但root会(由于保留空间)。所以YMMV。

还有两条忠告

分配组以限制 SSH 访问

创建一个组ssh-users(或您喜欢的任何名称)并在sshd_config. root根据您根据上述信息选择的策略,确保该用户是或不是该组的成员。

AllowGroups ssh-users
Run Code Online (Sandbox Code Playgroud)

分配一个组以限制用户只能访问 SFTP

sshd_config下面,然后将确保用户无法逃脱/home和某些功能对他们无效。

Match group sftponly
    ChrootDirectory /home
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)

结论

所以是的,如果在 Linux 上,则必须考虑添加 PAM。

还有是否允许代理转发或将其留给您的用户。

最后但并非最不重要的是是否允许他们转发端口或 X11 连接。特别是端口可能是不可取的,因为它们允许用户将您的服务器用作代理。

Match指令还允许您限制用户连接的位置(防火墙或 TCP 包装器也可以这样做)。

您希望您的用户被允许管理密钥,还是希望将其抽象化并使authorized_keys他们无法直接访问?

当然还有更多方面,但它们大多处于更细粒度的细节水平,以及上述各点的变化。