Назад | Перейти на главную страницу

Неустранимый: невозможно инициализировать SFTP: не удалось подключиться

Я использую 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