На Linux можно использовать ip_conntrack
выполнять это. Это - модуль отслеживания соединения, используемый обычно для контроля соединений для странно ведущих себя протоколов (как FTP), чтобы управляться полем брандмауэра/NAT.
modprobe ip_conntrack
cat /proc/net/ip_conntrack
Вы можете grep псевдофайл для наблюдения установленных соединений, и далее grep исходный IP для наблюдения, когда он происходит из поля.
В первую очередь, я предложил бы использовать ChrootDirectory %h
вместо /home/%u
, как %h
расширяется до дома пользователя, даже если это нет /home/$USER
.
Теперь к Вашей фактической проблеме: необходимо вызвать internal-sftp
как команда, которая будет выполнена. Следующая конфигурация работает просто великолепно для меня, и если также для Вас:
Match group sftp
ForceCommand internal-sftp
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
Дом пользователя должен быть root
- принадлежавший и имеют 755 полномочий, как упомянуто выше:
drwxr-xr-x 22 root root 4.0K Nov 24 2011 /home/testuser
Я знаю, что этот вопрос старый, но это помогло мне.
chmod o-x /home/*
запустите вышеуказанную команду из sudo, и это ограничит пользователя его собственным домашним дир.
fakechroot
Подготовьте пользователя и каталог, который вы хотите использовать для SSH. Например, вы можете скопировать некоторые команды из каталога /bin
в каталог пользователя bin
. Считается, что имя пользователя test
и каталог пользователя /home/test
.
Установите пакет fakechroot
.
# Debian-based distros
sudo apt install fakechroot
Откройте файл конфигурации сервера OpenSSH для редактирования (, например./etc/ssh/sshd_config
).
Добавьте следующие строки в файл конфигурации (или замените существующие строки, если они существуют):
# Replace test with your user of choice
Match User test
ForceCommand fakechroot chroot /home/test
# Other options
Сохраните файл. Запустите сервер OpenSSH на нужном порту. Теперь попробуйте войти через SSH. Все должно работать так, как ожидалось.
Надеюсь, это поможет!