Як встановити з'єднання з SFTP-сервером
07:24, 26.04.2021
Неможливо уявити роботу з віддаленим сервером без захищеної системи передачі файлів між системою і користувачем - і без 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, але і з будь-якими іншими завданнями конфігурації на вашому сервері!