是否可以使用 openssh 在 ubuntu 上设置用户,以便 ssh 不使用密码验证但 sftp 使用密码验证?
我假设如果我改变/etc/ssh/ssh_config
这PasswordAuthentication yes
一点,用户就可以使用密码通过 ssh 和 sftp 登录。
编辑:我的目的是让一些用户使用密码而不是密钥文件进行 sftp。但我不希望 ssh 用户能够使用密码登录,我希望他们必须使用密钥文件。如果有帮助的话,我不需要 sftp 用户能够登录,他们只需要执行 sftp。
答案1
据我了解,你(至少对于这个特定问题)有两个清楚的用户组,一个可以通过 SSH 登录并获得交互式 shell (我们称之为组ssh
),另一个可以通过 SFTP 登录并且只能获得 SFTP shell (我们称之为组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_配置(5)以及关于允许模式在ssh_配置(5)。
您还必须重新启动该ssh
过程才能使其生效:
sudo /etc/init.d/ssh restart
答案2
不,我也不明白这如何能提高安全性,那有什么意义呢?
授权密钥如果您需要的话,可以允许不同的键使用不同的命令。否则,您可以选择创建多个帐户并使用 acls 或 sudo。
答案3
虽然这是在瞎猜,但你可能会发现这个帖子很有趣。