Як я можу налаштувати SFSS-сервер openSSH на Linux?


10

Я хочу налаштувати sftp-сервер для спільного використання каталогу, але я не знаю, як змінити /etc/ssh/sshd_config.

Мої вимоги:

1) Вхід не повинен використовувати сертифікати, а лише пароль (тобто метод авторизації використовує пароль)

2) Я хочу увійти з користувачем: ftp, пароль: foo та довідник спільного доступу / home / ftp.

3) У мене є додаток, який час від часу потребує завантаження файлу з сервера, мені не потрібно входити з повноцінним операційним клієнтом.

Поки що я додав наступні рядки до / etc / ssh / sshd_config:

Protocol 2
Subsystem sftp /usr/libexec/sftp-server
Match User ftp
   ForceCommand internal-sftp
   ChrootDirectory /home/ftp

Все інше коментується.

/home/ftp в даний момент порожній каталог.

Доступ працює, якщо я намагаюся завантажити файл за допомогою кореневих даних, але він не працює, якщо я використовую ftp. Чи потрібно встановити оболонку для входу? Чи потрібно мені якось заповнювати / home / ftp?

EDIT: Це мій журнал sshd:

subsystem request for sftp
debug1: subsystem: exec() internal-sftp
debug1: Forced command (config) 'internal-sftp '
debug2: fd 3 setting TCP_NODELAY
debug2: fd 9 setting O_NONBLOCK
debug2: fd 8 setting O_NONBLOCK
debug1: Received SIGCHLD.
debug1: session_by_pid: pid 17613
debug1: session_exit_message: session 0 channel 0 pid 17613
debug2: channel 0: request exit-status confirm 0
debug1: session_exit_message: release channel 0
debug2: channel 0: write failed
debug2: channel 0: close_write
debug2: channel 0: send eow
debug2: channel 0: output open -> closed
debug2: channel 0: read<=0 rfd 9 len 0
debug2: channel 0: read failed
debug2: channel 0: close_read
debug2: channel 0: input open -> drain
debug2: channel 0: ibuf empty
debug2: channel 0: send eof
debug2: channel 0: input drain -> closed
debug2: channel 0: send close
debug2: notify_done: reading
debug3: channel 0: will not send data after close
debug3: channel 0: will not send data after close
User child is on pid 17611
debug3: mm_request_receive entering

* Клієнт висить тут (до настання тайм-ауту) *

Знову зауважте, що якщо я ввійду як "корінь", файл завантажується правильно. Він також завантажується правильно, якщо я коментую останні три рядки файлу конфігурації (тобто Matchрядок та наступні 2).


Ви пробували тільки вказати один з матчу варіантів? Що відбувається, коли ви використовуєте реального клієнта SFTP? Ви все ще можете підключитися за допомогою звичайного клієнта SSH, наприклад ssh, або PuTTY у Windows? Яку версію OpenSSH ви використовуєте?
Даніель Бек

Відповіді:


7

Вам потрібно переконатися, /home/ftpщо rootця група та інші особи не мають дозволу на запис, наприклад chmod 0755. Вам потрібно додати підкаталоги для ftpдодавання файлів у.


Вам також потрібна internal-sftpпідсистема, інакше вам потрібно забезпечити належне chrootсередовище у /home/ftp:

Subsystem sftp internal-sftp

Щоб заборонити всі типи входу без пароля, введіть

ChallengeResponseAuthentication no
GSSAPIAuthentication no
PubkeyAuthentication no

Вони активовані за замовчуванням.


Заміна рядка підсистеми вашим (та встановлення дозволу каталогу) змушує мій рядок помилок зникати, проте моя клієнтська програма "зависає" і не завантажує потрібний мені файл (я можу завантажити його за допомогою кореневих даних). Чи є спосіб зробити sshd вихід більш докладним?
Еміліано

Спробуйте лише додати по черзі окремий елемент конфігурації та перевірити, чи можна підключитися, щоб визначити, який із варіантів винен, чи це може бути комбінація параметрів. У вас повинен бути якийсь вихід /var/log/secure, принаймні саме там я його отримую в своїй системі.
Даніель Бек

Я підвищив рівень входу за допомогою директиви LogLevel. Я можу прочитати рядок в /var/log/messages. У мене є наступне: Failed none for ftp [...]слідом за Accepted password for ftp [...]і User child is on pid 7658. Клієнт зависає, а потім тайм-аут
Еміліано

@happy_emi Поміркуйте, додавши цю інформацію до свого питання.
Даніель Бек

Схоже, це була проблема дозволів каталогів. sshd_configбуло просто чудово.
Еміліано
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.