Я использую OpenSSH на Cygwin, который я пытаюсь использовать только как сервер SFTP. Сначала я установил его с настройками по умолчанию (внешний SFTP-сервер sftp-server
) и это сработало. Я смог запустить PSFTP PuTTY и «открыть localhost» и просмотреть мои файлы.
Однако в целях безопасности я хотел:
Для этого я поставил в конце /etc/sshd_config
:
Subsystem sftp internal-sftp
Match User myusername
ChrootDirectory /home/myusername
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp -d / -R
Match User !myusername
ForceCommand echo 'successful login man, congrats'
(Последняя часть из этот ответ, что по существу не позволяет соответствующему пользователю войти в систему.)
Обратите внимание, что я также добавил -d /
к internal-sftp
в командной строке, поскольку он сказал мне, что по умолчанию используется домашний каталог, поэтому я подумал, что он может попытаться загрузить /home/myusername
по умолчанию, который будет отображаться на /home/myusername/home/myusername
в реальной системе (путь, которого не существует).
Однако при попытке войти в систему я получаю следующую ошибку:
psftp> open localhost
login as: myusername
myusername@localhost's password:
Fatal: unable to initialise SFTP: could not connect
psftp>
Что интересно, я нахожусь на сервере, а не на SFTP:
psftp> open localhost
login as: myusername
myusername@localhost's password:
Fatal: unable to initialise SFTP: could not connect
psftp> open localhost
psftp: already connected
psftp> pwd
Remote directory is (null)
psftp>
Что я делаю не так или как получить журналы для дальнейшего устранения неполадок?
Из руководства sshd:
ChrootDirectory
Specifies the pathname of a directory to chroot(2) to after
authentication. All components of the pathname must be root-owned
directories that are not writable by any other user or group. After the
chroot, sshd(8) changes the working directory to the user's home directory.
Скорее всего, ваш домашний каталог не принадлежит пользователю root, и sshd отказывается выполнять chroot в каталог, не принадлежащий root, поскольку это небезопасно. Создайте / home / chroot, подключите его к корневому каталогу и переместите в него свой домашний каталог.
Чтобы легко отладить эти проблемы и избежать блокировки, я рекомендую запустить отдельный экземпляр sshd на другом порту, в режиме без отсоединения и с включенной отладкой:
/usr/sbin/sshd -D -d -p 2222