Показать страницуИстория страницыСсылки сюдаНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ===== Настройка SFTP (SSH FTP) сервера в Windows ===== ==== Установка OpenSSH в Windows ==== Пакет OpenSSH уже включен в операционную систему в современных билдах Windows 10 (начиная с 1803), Windows 11, Windows Server 2022/2019 в виде Feature on Demand (как и RSAT). В этих версиях Windows вы можете установить сервер OpenSSH с помощью PowerShell: <code>Add-WindowsCapability -Online -Name OpenSSH.Server*</code> Или с помощью DISM: <code>dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0</code> Также можно установить OpenSSH из графического интерфейса Windows 10 (Settings -> Apps -> Optional Features -> Add a feature -> Open SSH Server -> Install). {{ :sftp_windows:ustanovka-openssh-server-v-windows.jpg?nolink |}} Чтобы проверить, установлен ли пакет: <code>Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'</code> Исполняемые файлы 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 Мб). * Распакуйте содержимое архива в целевой каталог, к примеру: **C:\OpenSSH-Win** * Запустите командную строку PowerShell с правами администратора и перейдите в каталог OpenSSH: <code>cd C:\OpenSSH-Win</code> * Добавьте путь к каталогу OpenSSH в переменную окружения Path {{ :sftp_windows:ustanovka-openssh-server-v-windows_2.jpg?nolink |}} * Установите сервер OpenSSH: <code>.\install-sshd.ps1</code>должно появиться зеленое сообщение ''sshd and ssh-agent services successfully installed''.{{ :sftp_windows:ustanovka-openssh-server-v-windows_3.jpg?nolink |}}Если запуск скриптов PowerShell блокируется вашей политикой выполнения, можно запустить скрипт такой командой: <code>powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1</code> ==== Настройка SFTP сервера на базе OpenSSH в Windows ==== Теперь вам нужно настроить OpenSSH для режима SFTP. Включите автозапуск для службы SSHD и запустите ее с помощью следующих PowerShell команд управления службами: <code>Set-Service -Name sshd -StartupType ‘Automatic’ Start-Service sshd</code> С помошью PowerShell отройте в брандмауэре Windows порт TCP 22 для входящего трафика на SSH сервер: <code>New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH</code> {{ :sftp_windows:ustanovka-openssh-server-v-windows_4.jpg?nolink |}} Откройте в любом текстовом редакторе конфигурационный файл **C:\ProgramData\SSH\sshd_config**, найдите и проверьте значение директивы **Subsystem sftp**. Здесь должен быть указан файл **sftp-server.exe**. {{ :sftp_windows:ustanovka-openssh-server-v-windows_5.jpg?nolink |}} <note tip> Рассмотрим полезные директивы в конфигурационном файле **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'' </note> ==== Подключение к SFTP серверу с помощью PowerShell и WinSCP ==== Теперь вы может подключиться к вашему SSH серверу на Windows по протоколу SFTP. Ниже мы покажем, как подключиться к SFTP серверу с помощью бесплатного клиента клиент WinSCP, консоли PowerShell и встроенной утилиты **sftp.exe**. В окне настройки подключения выберите протокол передачи файлов SFTP, укажите имя сервера и данные учетной записи Windows (в формате user@domain для доменных пользователей), под которой осуществляется подключение (возможно также настроить авторизацию по ключам). {{ :sftp_windows:ustanovka-openssh-server-v-windows_6.jpg?nolink |}} При первом подключении появится окно с предупреждением о том, что ключ хоста отсутствует в локальном кеше. {{ :sftp_windows:ustanovka-openssh-server-v-windows_7.jpg?nolink |}} Если все настроено правильно, клиент должен подключиться к SFTP серверу и отобразить список файлов в домашнем каталоге пользователя (по умолчанию каталог с профилем пользователя). С помощью привычного интерфейса файлового менеджера можно безопасно копировать файлы между сервером и клиентом по защищённому протоколу SFTP. {{ :sftp_windows:ustanovka-openssh-server-v-windows_8.jpg?nolink |}} Для подключения к SFTP серверу из PowerShell можно использовать модуль **Posh-SSH**. Вы можете скачать установить модуль из PowerShell Gallery или офлайн: <code>Install-Module -Name Posh-SSH</code> {{ :sftp_windows:ustanovka-openssh-server-v-windows_9.jpg?nolink |}} Для подключения к SFTP серверу с помощью пароля, нужно получить имя пользователя и пароль через Get-Credential: <code>$usrCreds= Get-Credential</code> Теперь можно подключиться к вашем SFTPS серверу: <code>$SFTPSession = New-SFTPSession -ComputerName 192.168.13.200 -Credential $usrCreds</code> Теперь вы можете вывести список файлов в удаленном каталоге на SFTP сервере. В этом примере я получу список файлов на рабочем столе пользователя (профиль пользователя в этом случае будет являться корнем) <code>Get-SFTPChildItem -SFTPSession $SFTPSession -Path "desktop" –Recurse</code> {{ :sftp_windows:ustanovka-openssh-server-v-windows_10.jpg?nolink |}} Чтобы скачать файл с удаленного SFTP сервера: <code>Get-SFTPItem -SessionId $SFTPSession.SessionId -Path "desktop/OpenVPNScript.log" -Destination c:\temp</code> Чтобы закачать файл с вашего компьютера на удаленный SFTP хост: <code>Set-SFTPItem -SessionId $SFTPSession.SessionId -Path C:\Temp\mytestfile.log -Destination “desktop”</code> {{ :sftp_windows:ustanovka-openssh-server-v-windows_11.jpg?nolink |}} Завершить SFTP сессию: <code>Remove-SFTPSession -SFTPSession $SFTPSession</code> В Windows вы можете использоваться встроенную утилиту **sftp.exe** (устанавливается вместе с клиентом OpenSSH) для подключения к SFTP серверу. Подключиться к sftp серверу: <code>sftp user1@192.168.13.200</code> Подключиться с помощью ssh ключа: <code>sftp -i .ssh/id_rsa user1@192.168.13.200</code> Вывести список файлов в удаленном каталоге: <code>pwd</code> Скачать файл с SFTP в локальный каталог на ваш компьютер: <code>get file-test1.txt</code> Загрузить файл с вашего компьютера на SFTP сервер: <code>put file-test2.txt</code> Закрыть сессию: <code>exit</code> {{ :sftp_windows:ustanovka-openssh-server-v-windows_12.jpg?nolink |}} Источник https://winitpro.ru/index.php/2016/03/31/sftp-ssh-ftp-na-windows-server-2012-r2/ CKG Edit work/sftp_windows.txt Последнее изменение: 2024/07/04 00:39 — rolland