我有一组用户只需要将文件上传到他们设置的 homedirs。我认为 sftp 就足够了,但我不希望他们通过 shell 登录。那么有可能吗?我的平台是 centos 7,存储用户的 homedirs 比如说 /personal/$user
我使用这些设置创建了用户
useradd -m -d /personal/user1 -s /sbin/nologin
给用户分配了密码,然后当我使用 sftp 登录机器时,它说无法连接。
我有一组用户只需要将文件上传到他们设置的 homedirs。我认为 sftp 就足够了,但我不希望他们通过 shell 登录。那么有可能吗?我的平台是 centos 7,存储用户的 homedirs 比如说 /personal/$user
我使用这些设置创建了用户
useradd -m -d /personal/user1 -s /sbin/nologin
给用户分配了密码,然后当我使用 sftp 登录机器时,它说无法连接。
我喜欢以下用于管理 SSH 访问的设置,我用它来管理小型服务器群上的一组用户。安全性和易于管理是我的首要任务。
它的主要功能是通过 Unix 组成员身份轻松管理 SSH 权限,具有严格定义的权限,并且默认情况下是安全的。
配置
安装软件(可选但有用):
添加组:
在
/etc/ssh/sshd_config
中,确保以下设置为No
:并在末尾
/etc/ssh/sshd_config
添加以下两节:(编辑文件后不要忘记重新启动 SSH)
解释
那么,这一切有什么作用呢?
allowssh
组中的用户(pubkey)登录。sftponly
无法通过 SSH 获得 shell,只能获得 SFTP。然后只需通过管理组成员来管理有权访问的人(组成员更改立即生效,不需要重新启动 SSH;但请注意,现有会话不受影响)。
members allowssh
将显示所有允许通过 SSH 登录的members sftponly
用户,并将显示所有限制为 SFTP 的用户。请注意,您的 sftp 用户需要同时是
sftponly
(以确保他们不会获得 shell)和allowssh
(以首先允许登录)的成员。更多信息
请注意,此配置不允许密码登录;所有账户都需要使用公钥认证。这可能是您使用 SSH 可以获得的最大安全性胜利,因此我认为即使您现在必须开始,也值得付出努力。
如果您真的不想要这个,那么也添加
PasswordAuthentication yes
到该Match Group allowssh
节中。这将允许allowssh
用户进行 pubkey 和密码验证。或者,您可以添加另一个组(和Match Group
节)以选择性地授予用户基于密码的登录。此配置将任何
sftponly
用户限制在他们的主目录中。如果您不希望这样做,请删除该ChrootDirectory %h
指令。如果您确实希望 chrooting 工作,重要的是用户的主目录(以及它上面的任何目录)
root:root
由 group/other 拥有并且不可写。主目录的子目录可以是用户拥有的和/或可写的。是的,用户的主目录必须是 root 拥有的并且对用户不可写。可悲的是,这种限制有充分的理由。根据您的情况,
ChrootDirectory /home
可能是一个不错的选择。sftponly
对于此解决方案,将用户的 shell设置/sbin/nologin
为既没有必要也没有害处,因为 SSHForceCommand internal-sftp
会覆盖用户的 shell。不过,使用
/sbin/nologin
可能有助于阻止他们通过其他方式(物理控制台、samba 等)登录。此设置不允许
root
通过 SSH 直接登录;这形成了额外的安全层。如果您确实需要直接 root 登录,请更改PermitRootLogin
指令。考虑将其设置为forced-commands-only
、prohibit-password
和 (作为最后的手段)yes
。对于奖励积分,请查看限制谁可以
su
扎根;添加一个名为 的系统组,并在 中wheel
添加/启用。auth required pam_wheel.so
/etc/pam.d/su
编辑你
/etc/ssh/sshd_config
的包含:重启
sshd
。如果您有多个用户,请将它们全部放在以逗号分隔的匹配用户行上,如下所示:配置
sftp
为不允许 shell 访问的关键是通过该ForceCommand
选项限制用户。只需将它们的默认 shell 更改为 /sbin/nologin。假设大多数 Linux 品种:
你可以使用tftp。通过 ssh 进行的任何操作都需要一些身份验证(密钥|密码)。
虽然可以保护 tftp,但可能值得重新考虑提供无需身份验证即可访问任何内容的决定。
http://manpages.ubuntu.com/manpages/bionic/man1/tftp.1.html