Answers:
据我了解,您(至少针对此特定问题)有两个不同的用户组,一个用户组可以通过SSH登录并获得一个交互式外壳程序(让我们称为该组ssh
),另一个用户可以通过SFTP登录并仅获得一个SFTP外壳程序(我们称为group sftp
)。
现在,创建组ssh
和sftp
系统上groupadd
,把各个用户组(gpasswd -a $USERNAME $GROUPNAME
)和追加在末尾以下行(这很重要!),你的sshd_config
位置在/etc/ssh/sshd_config
:
Match Group sftp
PasswordAuthentication yes
# Further directives for users in the "sftp" group
Match Group ssh
PasswordAuthentication no
# Further directives for users in the "ssh" group
阅读有关Match
的指令的sshd_config(5)和关于允许的模式在ssh_config中(5) 。
您还必须重新启动该ssh
过程才能生效:
sudo /etc/init.d/ssh restart
ssh
我的ubuntu盒子上已经有一个组,所以我真的只需要添加sftp
sftp用户并将其放入该组。我将把您的答案与结合使用,scponly
以防止sftp用户登录
PasswordAuthentication
设置为no
进一步,这是否仍然有效?是否Match Group
为sftp用户覆盖它?因为那是我所拥有的,但它不起作用。我可以用key ssh进入,但不能作为sftp用户。
不,我不知道这将如何提高安全性,那有什么意义呢?
如果您要这样做,则authorized_keys可以允许对不同的密钥使用不同的命令。否则,您可以选择创建多个帐户并使用acls或sudo。
在这里暗中作刺,但您可能会发现此主题很有趣。