我想阻止 UNIX 帐户通过 SSH 进行连接,但它仍然应该可用于 SCP / SFTP。
那可能吗?
原因在于,unix 服务器对应用程序使用通用帐户,并且人们在使用该通用帐户而不是个人帐户登录服务器时。出于审计原因,我们希望他们使用个人帐户通过 SSH 连接到盒子。
答案1
这是很有可能的,并且有很多方法可以做到这一点。有拼凑的解决方案,也有优雅的解决方案。这完全取决于您想要做什么以及您想要投入多少时间的细节。
如果您有一些仅远程用户想要限制为 scp/sftp,您可能需要查看斯波利和这套关于如何使其发挥作用的说明(假设是 Debian)。
你也可以尝试RSSH,这是做同样事情的另一个外壳替换。
您还应该为这些受限用户创建一个组,并(当然)将用户添加到该组中。然后,将类似的内容添加到您的sshd_config
文件中(通常在/etc/ssh
或 中找到/etc
):
Match Group sftp-only
ForceCommand internal-sftp
#ChrootDirectory /somewhere/%u # Optional chroot jail
#AllowTcpForwarding no # Disable TCP forwarding
#X11Forwarding no # Disable X11 forwarding
#Umask 700 # Set the umask
这将禁用/强制这些用户进行 TCP 转发等操作。显然,您需要删除#
您需要的内容。sshd_config(5)
有关详细信息,请查看联机帮助页。
在这些组装中,最简单的是将用户的 shell 更改为false
或nologin
(在 Debian 上分别为/bin/nologin
和/usr/sbin/nologin
)。稍微复杂一点的拼凑是对用户或用户组进行签入/etc/profile
,然后使用“不允许登录”消息将其注销。如果你喜欢对冲你的赌注(我愿意),你可以这样做还有。请记住,仅靠它是不够的。
答案2
是的,这是可能的,但并不容易。有一个名为 rssh 的程序,如果将其用作用户的默认 shell,则仅允许 sftp、scp、rsync、cvs 和 rdist。您当然可以编辑配置文件以进一步限制它。
答案3
您尝试过no-pty
该$HOME/.ssh/authorized_keys
用户吗?
man sshd(8), AUTHORIZED_KEYS FILE FORMAT:
no-pty Prevents tty allocation (a request to allocate a pty will fail).