我有一些用户需要将文件上传到其设置的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登录到计算机时,它说无法连接。
Answers:
编辑您/etc/ssh/sshd_config
要包含的内容:
Match User [SFTP user]
ForceCommand internal-sftp
重新启动sshd
。如果您有多个用户,则将它们全部放在匹配用户行上,并用逗号分隔,如下所示:
Match User User1,User2,User3
配置sftp
为不允许外壳程序访问的关键是通过该ForceCommand
选项限制用户。
Match User [SFTP user]
ForceCommand internal-sftp
仅尝试使用,不要写任何东西。
chroot
使用户无法导航并跳出定义的“监狱”
我喜欢以下用于管理SSH访问的设置,该设置在工作中用于管理小型服务器群中的一组用户。安全和易管理性是我的首要任务。
它的主要功能是通过Unix组成员身份轻松管理SSH权限,具有严格定义的权限以及默认情况下是安全的。
安装软件(可选,但有用):
yum install members # or apt install members
添加组:
addgroup --system allowssh
addgroup --system sftponly
在中/etc/ssh/sshd_config
,请确保以下设置为No
:
PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no
在的末尾/etc/ssh/sshd_config
添加以下两个节:
Match Group allowssh
PubkeyAuthentication yes
Match Group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
(不要忘记在编辑文件后重新启动SSH)
那么,这一切是做什么的呢?
allowssh
组中的用户。sftponly
组中的用户无法通过SSH获得外壳程序,只能通过SFTP获得外壳程序。然后,只需通过管理组成员身份即可完成对谁具有访问权限的管理(这些更改将立即生效,无需重新启动SSH):
# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#
请注意,您的sftp用户需要既是sftponly
(以确保他们不会获得外壳程序)的成员,又是allowssh
(首先允许登录)的成员。
请注意,此配置不允许密码登录。所有帐户都需要使用公共密钥身份验证。这可能是使用SSH可以获得的最大的安全性胜利,因此即使您必须立即开始,我也认为值得这样做。
如果您确实不希望这样做,也可以添加PasswordAuthentication yes
到Match Group allowssh
节中。这将允许用户对pubkey和password进行身份验证allowssh
。
此配置将任何sftponly
用户限制在其主目录中。如果您不希望这样做,请删除该ChrootDirectory %h
指令。
如果您确实希望chrooting能够正常工作,那么用户的主目录(及其上方的任何目录)root:root
应由组/其他所有者拥有,并且不可写,这一点很重要。主目录的子目录可以是用户拥有的和/或可写的。
是的,用户的主目录必须是root拥有的,并且对用户不可写。可悲的是,有此限制的充分理由。根据您的情况,ChrootDirectory /home
可能是一个不错的选择。
设置的外壳sftponly
用户/sbin/nologin
是既无必要,也有害于这种解决方案,因为SSH的ForceCommand 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
。
chown root:root
与chmod og-w
只需将其默认shell更改为/ sbin / nologin。假设大多数Linux版本:
# usermod -s /sbin/nologin username
Subsystem sftp internal-sftp
)(或也许ForceCommand internal-sftp
)时,它才允许SFTP 。如果通用Subsystem sftp /path/to/sftp-server
,nologin
甚至会阻止SFTP。
您可以使用tftp。通过ssh进行的任何操作都需要一定的身份验证(密钥|传递)。
尽管可以保护tftp,但值得重新考虑是否提供不经身份验证即可访问任何内容的决定。