Надеюсь, это не обман, но я не могу найти ответ на этот вопрос... Я нашел это, которое на первый взгляд кажется таким же, но очень старым, и единственный ответ в нем не отвечает на фактический вопрос: Установите пользователей как chroot для sftp, но разрешите пользователю входить в систему через SSH
Я успешно настроил рабочую среду ChrootDirectory через sftp для пользователей в группе 'sftp_users'. Он работает хорошо, все необходимые разрешения и тому подобное, ограничивая доступ только к sftp, и они могут rw в своих подкаталогах внутри ChrootDirectory. Это отлично подходит для непривилегированных пользователей, запрещающих доступ по ssh и разрешающих rw только внутри их подпапок в ChrootDirectory.
Я хотел бы иметь немного больше привилегированных пользователей, которые по-прежнему могут нормально использовать ssh, однако при входе в систему через sftp у них будет среда ChrootDirectory. Это не проблема безопасности, так как они считаются привилегированными, и obvi может перемещаться по файловой системе в ssh в рамках своих обычных прав пользователя. Проблема в том, что я не вижу способа их Chroot, когда они входят в систему по sftp, не предотвращая вход в систему по ssh. Это больше для стандартизации и удобства, чем для чего-либо еще, поэтому, когда они используют sftp, они просто достигают своего местоположения Chrooted, как пользователи, использующие только sftp.
Я думал, что это сработает, если я оставлю их оболочку по умолчанию (не /bin/false или nologin). К сожалению, когда они находятся в группе sftp_only, это вообще не позволит им войти по ssh, только по sftp. Есть ли обходной путь для этого, кроме наличия двух отдельных учетных записей: одна добавлена в «sftp_users», а другая не входит в эту группу? Пока все, что я могу найти, это документация по ограничению sftp Chroot и одновременному запрету ssh, если они находятся в этой группе.
Пример пользователя "test". 'test' находится в группе sftp_users и, следовательно, может войти в систему через sftp и быть Chrooted в указанную папку ('/sftp/test'), а также читать или писать в свою домашнюю папку, смонтированную привязкой в '/sftp/test/home' . Это все работает. Но даже если его оболочка по-прежнему установлена в /etc/passwd как /bin/bash, 'test' не может войти через ssh, если он добавлен в группу sftp_users. Удалите членство в этой группе, и он может делать и то, и другое, но тогда не Chrooted под sftp.
Пользователи, не входящие в группу 'sftp_users', по-прежнему могут входить в систему через ssh или sftp, но не получают доступ к Chroot через sftp.
Есть ли способ сопоставить, какой протокол используется, и/или, возможно, установить дополнительное совпадение для другой группы? Я ищу только chroot, когда они входят в систему через sftp. Этим пользователям подходит не-chroot через ssh.
Ниже приведен мой sshd_config:
Порт ХХХХ
#ListenAddress ::
#ListenAddress 0.0.0.0
Протокол 2
Ключ хоста /etc/ssh/ssh_host_rsa_key
Ключ хоста /etc/ssh/ssh_host_dsa_key
Ключ хоста /etc/ssh/ssh_host_ecdsa_key
Ключ хоста /etc/ssh/ssh_host_ed25519_key
АУТЕНТИФИКАЦИЯ SyslogFacility
ИНФОРМАЦИЯ об уровне журнала
ЛогинGraceTime 120
PermitRootЛогин нет
Строгие режимы да
PubkeyAuthentication да
Игнорировать хосты да
Аутентификация на основе хоста нет
PermitEmptyPasswords нет
ВызовОтветАутентификация нет
X11Переадресация да
X11DisplayOffset 10
PrintMod да
PrintLastLog да
ClientAliveCountMax 10
Клиентживинтервал 3600
TCPKeepAlive нет
#Баннер /etc/issue.net
AcceptEnv ЯЗЫК LC_*
Подсистема sftp /usr/lib/openssh/sftp-server -u 0027
ИспользоватьPAM да
Аутентификация по паролю да
Группа соответствия sftp_users
ChrootDirectory /sftp/%u
ForceCommand внутренний-sftp -u 0027
X11Номер переадресации
AllowTcpForwarding нет
Аутентификация по паролю да