Налаштування SFTP доступу

Якщо з якоїсь причини знадобилося дати віддалений доступ до файлів на комп’ютер під управлінням операційної системи з сімейства Linux, то найбезпечніше буде це зробити через SFTP. SFTP позначає SSH File Transfer Protocol, і не має ніякого відношення до звичайного FTP протоколу, а так само в рази безпечніше. Однак, приступимо до налаштування.

Опубліковані нижче маніпуляції проводилися з операційною системою Debian 7.

Створення користувача для SFTP

Створюємо нового користувача:

useradd -m -s / sbin / nologin crazyadmin

-m – вказує необхідність створити домашню директорію користувача в каталозі / home;
-s – задає оболонку користувача – / sbin / nologin забороняє користувачеві використовувати shell.
crazyadmin – ім’я користувача

Встановлюємо створеному користувачеві пароль:

passwd crazyadmin

Якщо щось пішло не так, то завжди можна видалити користувача командою userdel username, наприклад:

userdel crazyadmin

І створимо для нового користувача папку chroot, про її призначення буде розказано нижче.

mkdir / home / crazysadmin / chroot

Налаштування сервера SSH

Тепер вирушаємо в конфіг SSH – / etc / ssh / sshd_config

Шукаємо наступний рядок:

Subsystem sftp / usr / lib / openssh / sftp-server

і міняємо на

Subsystem sftp internal-sftp

Тепер вирушаємо в самий кінець конфіга, і там дописуємо:

Match User crazyadmin X11Forwarding no AllowTcpForwarding no AllowAgentForwarding no PermitTunnel no ForceCommand internal-sftp ChrootDirectory% h / chroot

ChrootDirectory – батьківський каталог тієї папки, до якої ми хочемо відкрити доступ по SFTP. В даному прикладі використовується директорія chroot, яка лежить в папці користувача.

Якщо на вашому сервері налаштований доступ по SSH тільки через файл ключа, а потрібно зробити можливість заходити по паролю, то тоді дописуємо ще наступне:

PasswordAuthentication yes
Якщо на сервері встановлений метод авторизації по паролю, а є бажання зробити більш надійну авторизацію через файл ключа, то можна скористатися цією статтею.

Після завершення всіх маніпуляцій з SSH сервером, його потрібно перезавантажити:

service ssh restart

Налаштування директорій для користувача SFTP

Вирушаємо в директорію / home і там шукаємо папку новоствореного користувача, а в ній папку chroot. Встановлюємо її власником користувача root:

chown root: root / home / crazyadmin / chroot

Встановлюємо потрібні права на папку:

chmod 755 / home / crazyadmin
Увага! Ні в якому разі не слід виставляти ChrootDirectory будь-які інші права, в такому випадку буде вискакувати наступна помилка: fatal: bad ownership or modes for chroot directory component.

Тепер уявімо, що нам потрібно надати доступ до кількох папок, і вони всі лежать за межами ChrootDirectory. Вихід із ситуації наступний:

Припустимо нам потрібно дозволити доступ до папки /var/www/sysadmin.ru. Створюємо в домашньому каталозі пользотвателя / home / crazyadmin папку з назвою sysadmin.ru.

mkdir /home/crazyadmin/sysadmin.ru

Тепер змонтуємо в цю папку ту директорію, доступ до якої нам потрібно забезпечити:

mount –bind /var/www/sysadmin.ru/ /home/crazyadmin/sysadmin.ru/chroot

Виставляємо необхідні для редагування права для нашої директорії /var/www/sysadmin.ru:

chmod 777 /var/www/sysadmin.ru find /var/www/sysadmin.ru -type f -exec chmod 664 {} + find /var/www/sysadmin.ru -type d -exec chmod 777 {} +

Якщо в процесі монтування директорії щось пішло не так, то можна прибрати монтування командою unmount:

umount /home/crazysyadmin/sysadmin.ru

На цьому настройка SFTP сервера завершена.

часті помилки

  • fatal: bad ownership or modes for chroot directory component – як писалося вище, дана помилка з’являється тоді, коли власником ChrootDirectory є не користувач root, і права не рівні 755.
  • No supported authentication methods available (server sent public key) – сервер налаштований на авторизацію по ключу. Якщо потрібна авторизація по паролю, то в конфіги / Etc / ssh / sshd_config потрібно поміняти значення у змінної PasswordAuthentication з no на yes, а після перезапустити сервер командою service ssh restart.
Ссылка на основную публикацию