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

dar*_*dar 16 ubuntu ssh sftp

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

我假设如果我更改/etc/ssh/ssh_configPasswordAuthentication yes这使得用户可以使用密码同时使用 ssh 和 sftp 登录。

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

jos*_*chi 26

据我所知,您有(至少对于这个特定问题)两组不同的用户,一组能够通过 SSH 登录并获得交互式 shell(我们称之为组ssh),另一组能够通过 SFTP 登录并且只能获得 SFTP shell(让我们称之为组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
Run Code Online (Sandbox Code Playgroud)

阅读有关Match的指令的sshd_config(5)和关于允许的模式ssh_config中(5)

您还必须重新启动该ssh过程才能生效:

sudo /etc/init.d/ssh restart

  • 这没有很好的文档记录,但只会使用一个 Match 指令;你应该把最具体的指令放在最上面。如果您首先列出 sftp,则将允许两个组中的用户进行 PasswordAuthentication。 (6认同)
  • 如果 `PasswordAuthentication` 进一步设置为 `no`,这仍然有效吗?“匹配组”是否会为 sftp 用户覆盖它?因为这就是我所拥有的,但它不起作用。我可以使用密钥 ssh 登录,但不能作为 sftp 用户。 (3认同)