Як встановити з'єднання з SFTP-сервером

Як встановити з'єднання з SFTP-сервером

26.04.2021
Автор: HostZealot Team
2 мін.
1928

Неможливо уявити роботу з віддаленим сервером без захищеної системи передачі файлів між системою і користувачем - і без SFTP тут важко обійтися. Щоб протокол працював належним чином, дуже важливо правильно налаштувати SFTP в різних версіях Linux і Windows. У цій статті ми покажемо вам, як це зробити швидко і просто.

Що таке SFTP?

SSH File Transfer Protocol - саме так розшифровується абревіатура SFTP. Повна назва чітко показує головну особливість протоколу: він заснований на технології Secure Shell. Це гарантує, що передача всієї інформації буде зашифрована, від файлів до імен користувачів і паролів. Навіть у FTPS (FTP з SSL), не кажучи вже про звичайний FTP, існує більше обмежень. До речі, якщо заглиблюватися в деталі, то SFTP взагалі не має відношення до FTP: у них різні технологічні основи.

Окрім високої безпеки, протокол передачі файлів SSH має й інші переваги:

  • єдине з'єднання для надсилання файлів і команд;
  • можливість переривати та відновлювати надсилання файлів, а також видаляти файли;
  • підтримка символічних посилань, списків каталогів та інших функцій;
  • дещо швидший і стабільніший зв'язок та робота;
  • автентифікація доступна через SSH-ключ, що означає відсутність інформації про власника.

Слід також зазначити, що протокол SFTP використовується в UNIX-системах, і часто стандартні утиліти вже мають як SSH-клієнт, так і SSH-сервер.

Як налаштувати SFTP?

Встановлення та налаштування протоколу передачі файлів SSH не є надто складним, але розповідь можна розділити на два напрямки - в залежності від операційної системи, яка використовується.

Налаштування сервера протоколу передачі файлів SSH в Linux

Спочатку необхідно встановити пакет SSH на стороні сервера OpenSSH і на стороні користувача. Перше завдання вирішується за допомогою наступних команд:

  • Ubuntu і Debian: sudo apt install openssh-server
  • CentOS і RHEL: sudo yum -y install openssh-server openssh-clients

А щоб організувати доступ з комп'ютера, потрібна наступна команда:

  • sudo apt install ssh

Після цього можна переходити безпосередньо до налаштування SFTP. Всю роботу варто розділити на кілька етапів:

1.Створення груп і користувачів. Створюючи користувачів і розбиваючи їх на групи, ви можете налаштувати їх права, можливості та обмеження доступу до певного каталогу на сервері. Для цього необхідно виконати наступні дії:

  • створити групу: sudo groupadd GROUPNAME
  • додайте користувача до групи: sudo useradd -g GROUPNAME USERNAME
  • встановити пароль користувача: sudo passwd PASSWORD

2. Створення каталогів. Якщо на сервері є кореневий каталог (назвемо його, наприклад, "каталог"), кожен користувач може мати доступ лише до певної "власної папки", тобто тієї, до якої він потрапляє при вході в систему. У цьому випадку ви можете налаштувати SFTP так, щоб користувач міг бачити вміст папки, але файл завантажувався в окремий розділ (наприклад, "loadfolder"). Вам знадобляться наступні команди:

sudo mkdir -p / catalog / USERNAME/loadfolder
sudo chown -R root.GROUPNAME/catalog/USERNAME
sudo chown -R USERNAME/GROUPNAME/catalog/USERNAME/loadfolder

3. Налаштуйте sshd_config. Це необхідно з двох причин. З одного боку, у користувача буде відкритий SFTP (а не звичайна оболонка SSH). З іншого боку, він не зможе вирівняти каталог і побачити розділи інших користувачів. Для цього додайте до файлу /etc/ssh/sshd_config наступний код:

Match Group GROUPNAME
      ChrootDirectory/catalog/% u
      ForceCommand internal-sftp

4. Перезавантаження. Для того, щоб вся система запрацювала, залишилося перезавантажитися:

  • sudo systemctl restart sshd

На цьому все - налаштування Linux SFTP завершено! Вхід аналогічний за допомогою команди в SSH. Використовуйте спеціальний синтаксис для керування вмістом сервера:

КОМАНДА [ДЖЕРЕЛО] [ПРИЗНАЧЕННЯ] 

Це деякі з найпоширеніших прикладів:

  • завантаження з віддаленого сервера на локальний: GET photo1.jpg ~/ЗРhotos
  • завантажити з локальної на віддалену: PUT ~/prices/price.pdf uploadfolder/
  • видалити файл з віддаленого сервера: RM upload_folder/ file_325.xlsx

Налаштування сервера з протоколом передачі файлів SSH під Windows

Спочатку настільні та серверні операційні системи Microsoft не підтримували SFTP, тому для роботи з ним були потрібні сторонні інструменти. Але сьогодні існує офіційний пакет для цих завдань: Win32-OpenSSH. Запуск і налаштування залежать від версії встановленої у вас операційної системи.

1. Windows Server 2019 або Windows 10 1803+

Ці варіанти ОС Microsoft пропонують найпростіший сценарій запуску SFTP-сервера, оскільки Win32-OpenSSH вже є їх частиною. Існує два способи встановлення:

  • через PowerShell: задайте команду типу Add-WindowsCapability -Online -Name OpenSSH.Server *.
  • через інтерфейс: Конфігурація "Додатки" Додаткові функції "Додати функцію" Відкрити SSH-сервер "Встановити

Залишилося з'ясувати адреси, за якими вони будуть розташовані:

  • виконувані файли: C:\Windows\System32\OpenSSH\
  • конфігураційний файл: C:\ProgramData\sshsh\
  • реєстр: C:\Windows\System32\OpenSSH\Logsshd.log
  • паролі:%USERNAME%\.ssh\

2. Windows Server 2016/2012 R2

На цій ОС, як і на перших версіях Windows 10, для налаштування SFTP потрібно завантажити OpenSSH: шукайте версію для 64-бітної системи на GitHub. Розпакувавши архів у потрібний каталог (наприклад, C:\catalog_OpenSSH), потрібно виконати низку кроків:

  • Відкрийте PowerShell від імені адміністратора і перейдіть до цільового каталогу, який ви створили раніше за допомогою команди Cd C:\catalog_OpenSSH. Шлях до нього слід додати до змінної оточення Path.
  • Почніть установку командою \Install-sshd.ps1 (успіх буде підтверджено повідомленням з зеленими літерами). Після цього необхідно згенерувати ключі для запуску служби SSH, вказавши: ssh-keygen.exe -A
  • У PowerShell запустіть автозапуск служби SSH двома послідовними командами: Set-Service -Name sshd -StartupType 'Automatic', а потім Start-Service sshd з нового рядка.
  • Відкрийте TCP-порт 22 для вхідного трафіку на SSH-сервер. Це можна зробити на брандмауері через PowerShell командою New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
  • Відкрийте конфігураційний файл (знаходиться в C:\ProgramData\SSH\) і переконайтеся, що потрібний файл правильно вказано в директиві sftp Subsystem - тобто sftp-server.exe.

Після налаштування SFTP в Windows залишається лише внести деякі зміни до конфігураційного файлу. Ось кілька стандартних прикладів:

  • AllowGroups corp\admingroup # Дозволити користувачам вказаної групи доступ до OpenSSH.
  • AuthenticationMethods password # заборонити ключі SSH (доступ буде лише за паролем користувача)
  • ForceCommand internal-sftp # ForceCommand internal-sftp #
  • ChrootDirectory C:\inetpubwwwrootftpfolder # створює та встановлює каталог входу для користувача SFTP

Після всіх налаштувань запускаємо SFTP-клієнт (наприклад, WinSCP), вводимо тип і ім'я сервера, облікові дані на ньому - і авторизуємося (при першому підключенні повинно з'явитися повідомлення, що ключ хоста відсутній в кеші). Якщо відкриється звичний інтерфейс файлового менеджера з каталогом користувача на сервері, то все налаштовано правильно!

Замість P.S.

Практика показує: хоча налаштування SFTP досить просте, у багатьох випадках у користувачів виникають різні нестандартні питання і ситуації. Щоб розібратися в них, варто подумати про компетентну допомогу - у вигляді професійної технічної підтримки від провайдера. Ми в HostZealot приділяємо їй максимальну увагу. Незалежно від того, чи замовляєте ви VPS для Windows або Linux, ви можете розраховувати на консультацію наших фахівців - вони допоможуть вам не тільки з налагодженням протоколу передачі файлів SSH, але і з будь-якими іншими завданнями конфігурації на вашому сервері!

# Як зробити Поділитися:
Статті за темою