Настройте sftp для использования пароля, но ssh не для использования пароля

15

Можно ли настроить пользователя в Ubuntu с помощью openssh, чтобы ssh не использовал аутентификацию по паролю, а sftp?

Я полагаю , что если я изменю /etc/ssh/ssh_configиметь PasswordAuthentication yesэто делает это возможным для пользователей , чтобы использовать пароли для входа в систему и с SSH и SFTP.

Изменить: Моя цель здесь состоит в том, чтобы позволить некоторым пользователям sftp с паролем вместо ключевого файла. Но я не хочу, чтобы пользователи ssh могли входить с паролем, я хочу, чтобы им приходилось использовать ключевой файл. Если это поможет, мне не нужны пользователи sftp для входа в систему, им нужно только сделать sftp.

Дар
источник

Ответы:

26

Как я понимаю, у вас есть (по крайней мере для этой конкретной проблемы) две отдельные группы пользователей, одна из которых может войти в систему через SSH и получить интерактивную оболочку (давайте назовем группу ssh), а другая - войти в систему через SFTP и получить только SFTP. оболочка (давайте назовем группу sftp).

Теперь создайте группы sshи sftpв вашей системе с помощью groupadd, поместите соответствующих пользователей в groups ( 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

Joschi
источник
6
Это плохо документировано, но будет использоваться только одна директива Match; Вы должны поместить наиболее конкретную директиву сверху. Если вы сначала укажете sftp, то пользователю, входящему в обе группы, будет разрешена аутентификация по паролю.
Тобу
Благодарность! Уже есть sshгруппа на моих коробках ubuntu, так что мне действительно нужно только добавить sftpи поместить пользователей sftp в эту группу. Я объединю ваш ответ с использованием, scponlyчтобы пользователи sftp не могли войти в систему.
dar
2
Если PasswordAuthenticationнастроен на noдальнейшее повышение, это все еще будет работать? Match GroupПереопределяет ли это для пользователей sftp? Потому что это то, что у меня есть, и это не работает. Я могу ssh войти с ключом, но не могу как пользователь sftp.
alphadogg
0

Нет, и я не вижу, как это улучшит безопасность, так какой в ​​этом смысл?

author_keys может разрешить разные команды для разных ключей, если это то, что вам нужно. В противном случае у вас есть возможность создать несколько учетных записей и использовать acls или sudo.

Tobu
источник
Я не пытаюсь улучшить безопасность. Я пытаюсь облегчить для некоторых пользователей использование пароля вместо ключевого файла для доступа по sftp. Однако я не хочу, чтобы кто-либо использовал пароль для доступа по ssh.
Дар
@ Дар ОК; тогда разные аккаунты. Если бы это была одна и та же учетная запись, кто-то, знающий пароль sftp, мог бы перезаписать какой-нибудь файл профиля (.ssh / rc, .profile, .bashrc…) и получить те же привилегии, что и кто-то, знающий закрытый ключ.
Тобу
0

Принимая удар в темноте здесь, но вы можете найти эту тему интересной.

Справедливо ли сажать моих пользователей SFTP в их домашний каталог?

Тайлер К
источник
Я не вижу там ничего о PasswordAuthentication, поправьте меня, если я ошибаюсь.
Дар
Нет, ты прав. Не было ясно, что вы хотели сделать с SFTP против SSH. Из другого комментария я вижу, что вы хотите, чтобы пользователи использовали пароль для SFTP, но не для SSH. Почему?
Тайлер К
Потому что эти пользователи, которым нужно использовать sftp, находят ключевые файлы сложными, но они понимают, как вводить пароли. Это сводится к проблеме взаимодействия с пользователем для sftp. Но я хочу минимизировать площадь атаки, не допуская паролей в ssh.
Дар
SFTP работает, сначала открыв туннель ssh, затем передавая файлы по FTP. Вы не можете развестись. Я думаю, вы могли бы, настроив некоторые ACL, но это не имеет смысла.
Тайлер К