设置sftp以使用密码,但ssh不使用密码


15

是否可以使用openssh在ubuntu上设置用户,以便ssh不使用密码身份验证,而sftp呢?

我假设如果我更改/etc/ssh/ssh_config为拥有PasswordAuthentication yes该功能,则用户可以使用密码同时通过ssh和sftp登录。

编辑:我的目的是让一些用户使用密码而不是密钥文件进行sftp。但是我不希望ssh用户能够使用密码登录,而是希望他们必须使用密钥文件。如果有帮助,我不需要sftp用户能够登录,他们只需要执行sftp。

Answers:


26

据我了解,您(至少针对此特定问题)有两个不同的用户组,一个用户组可以通过SSH登录并获得一个交互式外壳程序(让我们称为该组ssh),另一个用户可以通过SFTP登录并仅获得一个SFTP外壳程序(我们称为group sftp)。

现在,创建组sshsftp系统上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


6
没有充分的文档说明,但是仅会使用一个Match指令。您应该将最具体的指令放在首位。如果您首先列出sftp,则两个组中的用户都将被允许使用PasswordAuthentication。
东武

谢谢!ssh我的ubuntu盒子上已经有一个组,所以我真的只需要添加sftpsftp用户并将其放入该组。我将把您的答案与结合使用,scponly以防止sftp用户登录
。–

2
如果PasswordAuthentication设置为no进一步,这是否仍然有效?是否Match Group为sftp用户覆盖它?因为那是我所拥有的,但它不起作用。我可以用key ssh进入,但不能作为sftp用户。
alphadogg

0

不,我不知道这将如何提高安全性,那有什么意义呢?

如果您要这样做,则authorized_keys可以允许对不同的密钥使用不同的命令。否则,您可以选择创建多个帐户并使用acls或sudo。


我不是要提高安全性。我试图使某些用户更容易使用密码而不是密钥文件进行sftp访问。但是,我不希望任何人使用密码进行ssh访问。
达累斯萨拉姆

@dar OK; 然后是不同的帐户 如果他们是同一帐户,那么知道sftp密码的人可能会覆盖某些配置文件(.ssh / rc,.profile,.bashrc…),并获得与知道私钥的人相同的特权。
东武

0

在这里暗中作刺,但您可能会发现此主题很有趣。

将我的SFTP用户监禁到其主目录是否公平?


我在那里看不到任何有关PasswordAuthentication的信息,如果我输入错了,请纠正我。
达累斯萨拉姆

不,你是对的。目前尚不清楚您想对SFTP和SSH做什么。我从其他评论中看到,您希望用户将密码用于SFTP而不是SSH。为什么?
泰勒·K

因为这些需要使用sftp的用户发现具有挑战性的密钥文件,但是他们了解如何键入密码。归结为sftp的用户体验问题。但是我想通过将密码排除在ssh组合之外来最大程度地减少攻击面。
dar

SFTP首先通过打开ssh隧道,然后通过FTP传输文件来工作。你真的不能把两者分开。我想您可以通过设置一些ACL来实现,但这实际上没有任何意义。
泰勒·K
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.