Я хотел бы создать sftp
учетная запись пользователя на сервере Ubuntu, который имеет доступ для чтения-записи только к одной определенной папке. Я хотел бы, чтобы этот пользователь имел права передать файлы и с моего сервера через sftp
. Мой сервер размещается на Цифровом Океане.
Я следовал этому учебному руководству на Цифровом Океане, который, кажется, делает точно, что я хочу, но я застрял в Step 4
.
Шаг 4 говорит попытку этой команды:
ssh sammyfiles@localhost
И результат должен быть:
Error message
This service allows sftp connections only.
Connection to localhost closed.
Вместо этого мой результат:
packet_write_wait: Connection to 207.154.238.143 port 22: Broken pipe
Connection closed
Затем это сообщает выполнению этого, которое должно, очевидно, работать:
sftp sammyfiles@localhost
Результат должен быть:
SFTP prompt
Connected to localhost.
sftp>
но вместо этого я добираюсь:
forge@BitCloud:~$ sftp misjah@localhost
misjah@localhost's password:
packet_write_wait: Connection to 127.0.0.1 port 22: Broken pipe
Couldn't read packet: Connection reset by peer
Я получаю то же сообщение, если я хочу sftp
с этим недавно созданным пользователем снаружи:
prmbair:~ primozrome$ sftp misjah@207.xxx.xxx.xxx
misjah@207.xxx.xxx.xxx's password:
packet_write_wait: Connection to 207.154.238.143 port 22: Broken pipe
Connection closed
prmbair:~ primozrome$
Что я делаю неправильно?
Обновление из комментариев: Кажется, что проблема находится в sshd_config
- ChrootDirectory
строка. Если я использую ChrootDirectory %h
затем sftp к пользовательским работам корневого каталога, но если я использую ChrootDirectory /home/user/uploads
(для ограничения только одной папкой) затем:
packet_write_wait: Connection to 127.0.0.1 port 22: Broken pipe.
Couldn't read packet: Connection reset by peer.
Какая-либо идея?
Я думаю, что есть ошибка о правах ...
Не могли бы вы показать нам возвращение команды ls -l
в вашем каталоге /var/sftp
, пожалуйста?
Я думаю, что у /var/sftp
есть права 755, но нет /var/sftp/uploads
, потому что команда chmod
не ' t рекурсивный, если мы этого не говорим, поэтому вам придется набрать: sudo chmod 755 -R /var/sftp
(параметр -R для рекурсивного). С -R
все подкаталоги в /var/sftp
будут иметь 755 прав.
Не могли бы вы попробовать, пожалуйста?
Удачи!
Из https://man.openbsd.org/sshd_config
ChrootDirectory Указывает путь к каталогу для chroot (2) после аутентификации. При запуске сеанса sshd (8) проверяет, что все компоненты пути являются корневыми каталогами, которые не доступны для записи любому другому пользователю или группе.
blockquote>У меня была та же проблема, и решение состояло в том, чтобы избежать использования каталога в доме пользователя, поскольку каталог / home / user не должен принадлежать пользователю root, а создать каталог, например, в. / var / sftp / uploads, где / var / sftp / принадлежит пользователю root, а / var / sftp / uploads принадлежит пользователю sftp. Затем я могу изменить пользователя sftp при загрузке.
ChrootDirectory /var/sftp
в / etc / ssh / sshd_config