Установите sftp учетную запись пользователя и restric доступ для чтения-записи к одной папке

Я хотел бы создать 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. 

Какая-либо идея?

1
задан 31 August 2017 в 19:13

2 ответа

Я думаю, что есть ошибка о правах ...

Не могли бы вы показать нам возвращение команды ls -l в вашем каталоге /var/sftp, пожалуйста?

Я думаю, что у /var/sftp есть права 755, но нет /var/sftp/uploads, потому что команда chmod не ' t рекурсивный, если мы этого не говорим, поэтому вам придется набрать: sudo chmod 755 -R /var/sftp (параметр -R для рекурсивного). С -R все подкаталоги в /var/sftp будут иметь 755 прав.

Не могли бы вы попробовать, пожалуйста?

Удачи!

0
ответ дан 7 December 2019 в 13:30

Из https://man.openbsd.org/sshd_config

ChrootDirectory Указывает путь к каталогу для chroot (2) после аутентификации. При запуске сеанса sshd (8) проверяет, что все компоненты пути являются корневыми каталогами, которые не доступны для записи любому другому пользователю или группе.

У меня была та же проблема, и решение состояло в том, чтобы избежать использования каталога в доме пользователя, поскольку каталог / home / user не должен принадлежать пользователю root, а создать каталог, например, в. / var / sftp / uploads, где / var / sftp / принадлежит пользователю root, а / var / sftp / uploads принадлежит пользователю sftp. Затем я могу изменить пользователя sftp при загрузке.

ChrootDirectory /var/sftp

в / etc / ssh / sshd_config

2
ответ дан 7 December 2019 в 13:30

Другие вопросы по тегам:

Похожие вопросы: