Sftp как настроить на windows

С помощью встроенного пакета OpenSSH для Windows вы можете легко настроить безопасную передачу файлов между клиентом и серверов Windows по защищенному протоколу передачи файлов SFTP (Secure FTP). В этой статье мы покажем, как установить и настроить установить SFTP сервер в Windows 10/11 или Windows Server 2022/2019/2016/2012R2 с помощью встроенных средств (Win32-OpenSSH).

Содержание:

  • Установка OpenSSH в Windows
  • Настройка SFTP сервера на базе OpenSSH в Windows
  • Подключение к SFTP серверу с помощью PowerShell и WinSCP
  • Настройка SFTP аутентификации по ключам

Протокол SFTP (Secure File Transfer Protocol , Secure FTP или SSH FTP) это расширение протокола SSH, являющимся стандартом мира UNIX/Linux систем. Хотя с точки зрения пользователей он похож на FTP, но на самом деле это абсолютно другой протокол, не имеющий с FTP ничего общего. Данные между клиентом и сервером передаются по порту 22 через SSH туннель.

Основные преимущества протокола SFTP:

  • Передача файлов и команд происходит внутри защищенной SSH-сессии;
  • Для передачи файлов и команд используется одно соединение;
  • Поддерживаются символические ссылки, доступны функций прерывания, возобновления передачи, удаления файла и другие;
  • Обычно на каналах, где FTP работает медленно или с перебоями, SFTP-соединение работает более надежно и быстро;
  • Возможность аутентификации с помощью SSH ключей.

Не нужно путать протоколы SFTP и FTPS. FTPS – это по сути обычный FTP с SSL сертификатом, а SFTP – это передача FTP данных и команд внутри SSH сессии.

В современные версии Windows по-умолчанию встроен порт OpenSSH для win32 (Win32-OpenSSH). Вы можете использовать его для организации защищенного SFTP сервера вместо таких сторониих продуктов как Core FTP, FileZilla, CYGWIN, OpenSSH, FTP Shell, IPSwitch и пр.

Установка OpenSSH в Windows

Пакет OpenSSH уже включен в операционную систему в современных билдах Windows 10 (начиная с 1803), Windows 11, Windows Server 2022/2019 в виде Feature on Demand (как и RSAT).

В этих версиях Windows вы можете установить сервер OpenSSH с помощью PowerShell:

Add-WindowsCapability -Online -Name OpenSSH.Server*

Или с помощью DISM:
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

Также можно установить OpenSSH из графического интерфейса Windows 10 (Settings -> Apps -> Optional Features -> Add a feature -> Open SSH Server -> Install).

установка сервере openssh в windows

Чтобы проверить, установлен ли пакет:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Исполняемые файлы OpenSSH находятся в каталоге:

C:\windows\system32\OpenSSH\

Конфигурационный файл sshd_config находится в каталоге C:\ProgramData\ssh (каталог создается после первого запуска службы).

Лог — c:\windows\system32\OpenSSH\logs\sshd.log

Файл authorized_keys и ключи хранятся в каталоге %USERPROFILE%\.ssh\.

В предыдущих версиях Windows 10, в Windows 8.1 или в Windows Server 2016/2012 R2 вам придется скачать Win32-OpenSSH для Windows с GitHub и установить вручную (https://github.com/PowerShell/Win32-OpenSSH/releases). Нам нужна версия для 64 битной версии Windows: OpenSSH-Win64.zip (4,15 Мб).

  1. Распакуйте содержимое архива в целевой каталог, к примеру:
    C:\OpenSSH-Win
  2. Запустите командную строку PowerShell с правами администратора и перейдите в каталог OpenSSH:
    cd C:\OpenSSH-Win
  3. Добавьте путь к каталогу OpenSSH в переменную окружения Path;
    добавить путь к openssh в переменную окружения path

  4. Установите сервер OpenSSH:
    .\install-sshd.ps1
    должно появиться зеленое сообщение “sshd and ssh-agent services successfully installed”).

Настройка SFTP сервера на базе OpenSSH в Windows

Теперь вам нужно настроить OpenSSH для режима SFTP.

Включите автозапуск для службы SSHD и запустите ее с помощью следующих PowerShell команд управления службами:

Set-Service -Name sshd -StartupType ‘Automatic’

Start-Service sshd

С помошью PowerShell отройте в брандмауэре Windows порт TCP 22 для входящего трафика на SSH сервер:

New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH

Правило файервола для SSHD порт 22

Откройте в любом текстовом редакторе конфигурационный файл «C:\ProgramData\SSH\sshd_config», найдите и проверьте значение директивы Subsystem sftp. Здесь должен быть указан файл sftp-server.exe.

sshd_config файл конфигурации sftp_server

Рассмотрим полезные директивы в конфигурационном файле sshd_config:
# разрешить подключение к OpenSSH только для пользователей из этой группы

AllowGroups corp\admingroup
# включить аутентификацию по паролю (нельзя использовать ключи SSH)
AuthenticationMethods password
ForceCommand internal-sftp
#каталог для SFTP пользователей (по умолчанию пользователь подключается в каталог со своим профилем в папке C:\users\username)
ChrootDirectory C:\SFTPRoot

#Для каждого пользователя можно индивидуальную chrootdirectory:

Match User user1
ChrootDirectory c:\SFTPRoot\user1
ForceCommand internal-sftp
X11Forwarding no
 AllowTcpForwarding no
Match User user2
ChrootDirectory c:\SFTPRoot\user2
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no

Подключение к SFTP серверу с помощью PowerShell и WinSCP

Теперь вы может подключиться к вашему SSH серверу на Windows по протоколу SFTP. Ниже мы покажем, как подключиться к SFTP серверу с помощью бесплатного клиента клиент WinSCP, консоли PowerShell и встроенной утилиты sftp.exe.

В окне настройки подключения выберите протокол передачи файлов SFTP, укажите имя сервера и данные учетной записи Windows (в формате
user@domain
для доменных пользователей), под которой осуществляется подключение (возможно также настроить авторизацию по ключам). При первом подключении появится окно с предупреждением о том, что ключ хоста отсутствует в локальном кеше.

winscp настройки sftp подключения

При первом подключении появится окно с предупреждением о том, что ключ хоста отсутствует в локальном кеше.

key-warning

Если все настроено правильно, клиент должен подключиться к SFTP серверу и отобразить список файлов в домашнем каталоге пользователя (по умолчанию каталог с профилем пользователя).

С помощью привычного интерфейса файлового менеджера можно безопасно копировать файлы между сервером и клиентом по защищённому протоколу SFTP.

sftp подключение в winscp

Для подключения к SFTP серверу из PowerShell можно использовать модуль Posh-SSH. Вы можете скачать установить модуль из PowerShell Gallery или офлайн:

Install-Module -Name Posh-SSH

установка модуля powershell ssh

Для подключения к SFTP серверу с помощью пароля, нужно получить имя пользователя и пароль через Get-Credential:

$usrCreds= Get-Credential

Теперь можно подключиться к вашем SFTPS серверу:

$SFTPSession = New-SFTPSession -ComputerName 192.168.13.200 -Credential $usrCreds

Теперь вы можете вывести список файлов в удаленном каталоге на SFTP сервере. В этом примере я получу список файлов на рабочем столе пользователя (профиль пользователя в этом случае будет являться корнем)

Get-SFTPChildItem -SFTPSession $SFTPSession -Path "desktop" –Recurse

powershell вывести список файлов на sftp сервере

Чтобы скачать файл с удаленного SFTP сервера:
Get-SFTPItem -SessionId $SFTPSession.SessionId -Path "desktop/OpenVPNScript.log" -Destination c:\temp

Чтобы закачать файл с вашего компьютера на удаленный SFTP хост:

Set-SFTPItem -SessionId $SFTPSession.SessionId -Path C:\Temp\mytestfile.log -Destination “desktop”

скачать файл с sftp с помощью powershell

Завершить SFTP сессию:

Remove-SFTPSession -SFTPSession $SFTPSession

В Windows вы можете использоваться встроенную утилиту sftp.exe (устанавливается вместе с клиентом OpenSSH) для подключения к SFTP серверу.

Подключиться к sftp серверу:

sftp [email protected]

Подключиться с помощью ssh ключа:

sftp -i .ssh/id_rsa [email protected]

Вывести список файлов в удаленном каталоге:

pwd

Скачать файл с SFTP в локальный каталог на ваш компьютер:

get file-test1.txt

Загрузить файл с вашего компьютера на SFTP сервер:

put file-test2.txt

Закрыть сессию:

exit

утилита sftp.exe в Windows

Настройка SFTP аутентификации по ключам

Вы можете настроить SFTP аутентификацию по ключам. В этом случае при подключении к SFTP серверу вам не нужно будет указывать пароль пользователя.

Подробно настройка SSH аутентификации по ключам описана в этой статье.

Для этого нужно:

  1. Создать на вашем компьютере (SFTP клиент) ключи для пользователя, под которым вы будете подключаться к серверу:
    ssh-keygen -t ed25519

    генерация пары ssh ключей для sftp в windows

  2. Утилита сгенерирует два файла
    id_ed25519
    (закрытый ключ для клиента) и
    id_ed25519.pub
    (открытый ключ для сервера);
  3. Теперь нужно добавить ваш SSH ключ на сервер. Скопируйте файл id_ed25519.pub(или id_rsa.pub в зависимости от типа ключа) в каталог .ssh профиля пользователя, под которым вы будете подключаться к SFTP серверу. Переименуйте файл в authorized_keys (например для пользователя alex путь будет выглядеть так:
    C:\Users\alex\.ssh\authorized_keys
    )

Теперь вы можете использоваться файл id_ed25519 для аутентификации на SFTP сервере в настройках WinSCP (настройки подключения Advanced -> to SSH > Authentication page -> Private key file).

Если вы хотите задать SSH ключ при подключении к SFTP из PowerShell, используйте такую команду:

New-SFTPSession -ComputerName 192.168.13.200 -Credential user1 -KeyFile C:\Users\alex\.ssh\id_ed25519" -Verbose

В данной инструкции я опишу, как можно настроить простой SFTP-сервер за 2 минуты используя программу Rebex Tiny SFTP Server, без танцев с веб-сервером IIS и прочих тайных обрядов по вызыванию компонентов Windows, которые так любят разработчики компании Microsoft.

Данный SFTP-сервер не требует никаких дополнительных действий или установки дополнительного ПО, а всего лишь настройку и запуск программы, все необходимые минимальные действия для работы SFTP-сервера программа выполняет самостоятельно.

SFTP (Secure File Transfer Protocol) — это протокол, предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения.

Для начала скачайте программу с сайта https://www.rebex.net/tiny-sftp-server/, программа бесплатная, по крайней мере на данный момент (2023).

Распакуйте архив её в любую папку и перейдите в неё,  

внутри Вы должны увидеть несколько файлов, нас интересуют только 2 файла:

RebexTinySftpServer.exe.config — файл конфигурации
RebexTinySftpServer.exe — исполняющий файл программы 

Для начала пропишем пользователя, пароль и корневой каталог в файл конфигурации:

Нужно заменить строчки:

<add key="userName" value="tester" />
<add key="userPassword" value="password" />
<add key="userRootDir" value="data" />

на следующие:

<add key="userName" value="ftpuser" />
<add key="userPassword" value="FqiJ2l8fZ6cR9oAv" />
<add key="userRootDir" value="C:\" />

Где я указал в качестве имени пользоваля «ftpuser», его пароль: «FqiJ2l8fZ6cR9oAv» и корневую папку «C:\» для подключения.
Обязательно измените эти данные на любые другие в целях безопасности.
Сохраните файл.

Далее откроем порт в файрволле сервера, откройте программу Powershell и введите следующие 2 команды: 

netsh advfirewall firewall add rule name="sftp-temporary" action=allow dir=in protocol=TCP localport=22
netsh advfirewall firewall add rule name="sftp-temporary" action=allow dir=in protocol=UDP localport=22

Можно запускать программу RebexTinySftpServer.exe, в окне программы Вы увидите кнопку Start, нажмите её, чтобы запустить SFTP-сервер. 
Надпись сменится на надпись Stop, что означает, что SFTP-сервер теперь работает.

Теперь можно подключаться к серверу по SFTP, для примера я буду использовать программу Filezilla, ввожу свои данные (у Вас IP адрес будет отличаться)

Как видно я смог успешно подключиться к серверу.

По завершении копирования файлов и когда Вам подклчюение больше не нужно, просто нажимаем кнопку Stop в проргамме и закрываем её.
В целях безопасности лучше не оставлять данную программу работающей на постоянной основе, а запускать её только когда она необходима.

Также рекомендую после остановки программы закрывать порт, который мы открыли ранее, для этого введите в Powershell следующую команду: 

netsh advfirewall firewall delete rule name="sftp-temporary" dir=in

Background Image

Setup a secure FTP server in your
Cloud Computer

In this tutorial, we will show you how to setup a secure FTP server in your cloud computer. Transferring confidential files from your local PC to your cloud computer can be difficult. That’s why you need a SFTP connection. You can follow this tutorial for smaller files that won’t need a FTP.

STEP 1

Download Rebex Tiny FTP here on your Cloud PC and UNZIP the files with right click and then Extract All.

Background Image

STEP 2

Open the file RebexTinySftpServer.exe.config with Notepad and edit the text as shown below:

Background Image

Replace the following words in the document and save

tester = The username of your choice
Password = The password of your choice

22 = 21

NOTE: This is for a public IP address. For a private IP address, you need to go to your dashboard under the tab Networking. Enter port 21 and it will generate a random port number. Replace 22 with the new random port number (55488 in the example below)

Background Image

Background Image

false = true
true = false

The final document should look like this:

Background Image

You can now SAVE the file document. Be sure to write down the username, password and port number for later use.

STEP 3

In the windows search bar, type allow and select the option allow an app through the firewall.

Select Allow another app and then Browse to select Rebex Tiny FTP.

Background Image

Then check both Public and Private and click OK

Background Image

STEP 4

Open Rebex Tiny FTP. It should show that the SFTP server has started and is ready to accept connections.

New-Image-Setup-a-secure-FTP-server-in-your-cloud-computer-image-11.png

STEP 5

On your local computer, download and install FileZilla. NOTE: you don’t need to install any third party app suggested in the installer.

Once finished, open up Filezilla. You need to complete 4 fields : Host – Username – Password – Port. The Host field is your Virtual Machine DNS address and can be found in your Dashboard as shown here:

Complete the fields and hit Quickconnect

Background Image

Background Image

Once connected, navigate to the files you want to transfer – right click – and select upload. The transfer will begin.
NOTES: You need to write port 55488 instead of 21 if you forwarded a port in the previous steps.
In FileZilla, the host field is SFTP://vm123456.cloud.v2cloud.kinsta.cloud .What follows SFTP:// is the address in your dashboard as seen below.

Background Image

STEP 6

Once done, your files will appear in the folder name data in the same folder you unzipped Rebex Tiny FTP.

Background Image

You now know how to set up and use a Secure File Transfer Protocol. Feel free to contact support at [email protected] or via the online chat in your Dashboard if you run into any issues.

Back To Tutorials Menu

Content

  1. Пошаговое руководство
  2. Проверка SFTP-соединения с помощью WinSCP
  3. Удаление службы Win32 OpenSSH

Пошаговое руководство

Установка и настройка SFTP-сервера (SSH FTP)

Сначала вам нужно скачать и установить OpenSSH с GitHub:
https://github.com/PowerShell/…
Скачайте архив: OpenSSH-Win64.zip

1) Распакуйте содержимое архива в целевую директорию, например:«C:\Windows«

Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

2) Откройте свойства системы(WIN+R, команда «sysdm.cpl«) -> Дополнительно -> Переменные среды
В появившемся окне есть два раздела: верхний содержит переменные окружения пользователя, нижний — системные переменные.
В системных переменных выберите переменную«Путь«, нажмите кнопку«Изменить…».

Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

3) В открывшемся окне нажмите«New» и введите путь к директории OpenSSH из шага 1, в данном примере:«C:\Windows\OpenSSH-Win64«.

Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

4) Запустите«PowerShell» от имени администратора:
Пуск, введите«PowerShell» → щелкните правой кнопкой мыши на«PowerShell» → Запуск от имени администратора

Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

5) Перейдите в каталог OpenSSH, в данном примере:«C:\Windows\OpenSSH-Win64«.

cd C:\Windows\OpenSSH-Win64

Установите сервер OpenSSH:
(должно появиться зеленое сообщение «службы sshd и ssh-agent успешно установлены»);

.\Install-sshd.ps1

Включите автозапуск для службы SSHD:

Set-Service -Name sshd -StartupType ‘Automatic’

Откройте TCP-порт 22 в брандмауэре Windows для входящего трафика на SSH-сервер:

New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH

Настройте владельца файла и права доступа: (На каждый вопрос отвечайте«Y«)

.\FixHostFilePermissions.ps1
Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

6) Откройте список служб(WIN+R, команда«services.msc«) -> Дважды щелкните на«OpenSSH SSH Server» → Установите тип запуска:«Автоматически«, нажмите «Запустить» → OK

Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

Проверка SFTP-соединения с помощью WinSCP

Скачайте и запустите бесплатный клиент WinSCP.
В окне настроек соединения выберите протокол передачи файлов SFTP, укажите имя сервера и данные учетной записи Windows, под которой вы подключаетесь.

Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

Если все настроено правильно, клиент должен подключиться к SFTP-серверу и отобразить список файлов в домашнем каталоге пользователя (каталог по умолчанию с профилем пользователя).
Используя привычный интерфейс файлового менеджера, можно безопасно копировать файлы между сервером и клиентом. Передача файлов будет осуществляться по защищенному протоколу SFTP.

Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

Удаление службы Win32 OpenSSH

Чтобы корректно удалить службу Win32 OpenSSH из системы, выполните следующие действия:

1) Запустите«PowerShell» от имени администратора:
Пуск, введите«PowerShell» → щелкните правой кнопкой мыши на«PowerShell» → Запуск от имени администратора

Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

2) Перейдите в каталог OpenSSH, в данном примере: «C:\Windows\OpenSSH-Win64».

cd C:\Windows\OpenSSH-Win64

3) Остановите службу SSHD:

Stop-Service sshd

4) Деинсталлируйте службу OpenSSD:

.\uninstall-sshd.ps1
Установка, тестирование и удаление SFTP-сервера на базе OpenSSH в Windows

You can set up an SFTP server on Windows using PowerShell or third-party tools with a graphical user interface. We’ll cover both methods and explain the requirements for SFTP.

What do I need for a Windows SFTP server?

Before you set up an FTP server, it’s important to first know the difference between FTP and SFTP. Unlike FTP, which sends data in plain text, the SFTP protocol ensures that data is encrypted when it is being transferred. To establish a secure channel for data transfer, you’ll need Secure Shell (SSH), which is provided by the open-source tool OpenSSH.

To connect to the SFTP server, you need to install an SFTP client. You can, for example, use FileZilla. FileZilla has a drag-and-drop file management system and allows you to transfer up to 4 gigabytes of data. It’s important to make sure your system has enough memory to transfer the amount of data you want to transfer. The following minimum system requirements need to be met:

  • Processor (CPU): min. 1.6 GHz (Dual core)
  • Memory (RAM): 4 GB
  • Disk space: depends on data size
  • Operating system: Windows
  • Software: OpenSSH, SFTP client
  • Internet connection: for data transfer

With secure FTP hosting from IONOS, you’ll have access to quick and secure servers with SFTP or FTPS.

Step-by-step instructions for setting up a Windows SFTP server

To install a Windows SFTP server, you need to download OpenSSH and open the corresponding SSH port so that the SFTP server and client can communicate with each other.

Step 1: install OpenSSH

Download the latest version of OpenSSH. This can be done from GitHub. Once you’ve downloaded the latest version, right-click to open PowerShell and select Run as administrator. Then go to the OpenSSH folder:

cd "C: \Program Files\OpenSSH"

bash

Use the command dir to list the files in the directory.

PowerShell: file list in the OpenSSH folder

PowerShell: file list in the OpenSSH folder

Step 2: activate SSHD and the SSH agent

Both the SSH daemon and the SSH agent can be installed with a command.

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

bash

Once they have been successfully installed, you can close the PowerShell.

You can manually start the SSH daemon or choose to have it activated with every restart. In Services.msc, you can set it up so that the SSH daemon automatically starts on boot.

Step 3: open an SSH port

SSH uses port 22 as its standard port. Since Windows doesn’t typically come with SSH preinstalled, this port is normally closed. You can manually open it using Windows Firewall. Open Windows Defender Firewall and select New Rule under Inbound Rules.

Windows Defender Firewall: add inbound rules

Windows Defender Firewall: adding inbound rules

In the next window, select Port and click on Next.

Windows Defender Firewall: select port rule

Windows Defender Firewall: select port rule

Select the TCP protocol and set ‘22’ as a port.

Windows Defender Firewall: setting SSH port 22

Windows Defender Firewall: setting SSH port 22

In the next window, keep the connection selected and tick the box next to Private under Profile.

Windows Defender Firewall: profile settings

Windows Defender Firewall: profile settings

You can also add a name for the new rule. In our example, we’ve used the name ‘OpenSSH’. You can also add a description. Once you’re done, you can close the port settings by clicking Finish.

Windows Defender Firewall: setting a name for the new rule

Windows Defender Firewall: setting a name for the new rule

Step 4: create SFTP connection

To connect to the SFTP server, you will need an SFTP client. Our example uses FileZilla, but you can also use WinSCP or Swish. One advantage of Swish is that it’s directly available in Windows Explorer. To configure the SFTP client, you need to enter the following information:

  • Connection type (SFTP)
  • IP address/Hostname
  • Username
  • Password
  • Port (usually 22)

Once you’re done, you can connect to the SFTP server. In our example, this is on the left-hand side of your local computer. On the right, you’ll see the folder structure of the server.

FileZilla: connect to the SFTP server

FileZilla: connect to the SFTP server

Step 5: upload files to the Windows SFTP server

Upload a file to the SFTP server by moving it to the file folder on the right-hand side or by right-clicking and selecting Upload.

FileZilla: upload file

FileZilla: upload file

Was this article helpful?

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Мастер установки оборудования windows 10 где
  • Install virtio driver windows
  • Аналог whatsapp для windows
  • Dism не запускается windows 7
  • Готовый образ windows 7 для запуска с флешки без торрента