Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1С:Предприятие и СУБД

Настройка SFTP соединения в 1С (SSH-ключи и WinSCP COM)

Обновлено: 10.09.2026 · Официальная документация ↗

Протоколы передачи и ограничения платформы

Для обмена банковскими выписками (DirectBank), реестрами зарплатных проектов или EDI-сообщениями современные контрагенты требуют использования защищенного протокола SFTP (SSH File Transfer Protocol), который работает через 22 порт с шифрованием. Исторически (до версии 8.3.22) платформа 1С:Предприятие "из коробки" поддерживала только FTP (порт 21) и FTPS (FTP over SSL/TLS). Попытки подключиться к SFTP-серверу штатным объектом FTPСоединение приводили к таймаутам или ошибке «Ошибка инициализации SSL соединения». Бизнес-риски: невозможность наладить B2B обмены с корпоративными партнерами (банки, маркетплейсы), требующими строгих стандартов ИБ.

Различия протоколов для обмена 1С

ПротоколПортШифрованиеПоддержка в 1С
FTP21Нет (Открытый текст)Нативно (С древних версий)
FTPS (FTP/SSL)21 / 990SSL/TLS (Сертификаты X.509)Нативно (Параметр ЗащищенноеСоединение)
SFTP22SSH (Криптоключи RSA/Ed25519)Нативно только с платформы 8.3.22! В старых - через COM (WinSCP).

Алгоритмы реализации SFTP в 1С

Сценарий 1: Нативная реализация (Только для платформы >= 8.3.22)

В новых релизах 1С добавлена полноценная поддержка SFTP и аутентификации по закрытому ключу SSH (Private Key).

 Подключение по SFTP средствами 1С 8.3.22+
ПараметрыСоединения = Новый ПараметрыСоединенияSFTP();
ПараметрыСоединения.КлючХоста = "...хеш отпечатка..."; // Опционально для валидации сервера
 
// Настройка авторизации по закрытому ключу (если пароль не используется)
КлючSSH = Новый ЗащищенныйКлючSSH(Новый Файл("C:\keys\private.pem"), "ПарольКлючаЕслиЕсть");
Аутентификация = Новый АутентификацияСекретнымКлючомSSH(КлючSSH);
 
// Создаем соединение (порт 22, протокол SFTP)
ФТП = Новый FTPСоединение("sftp.partner.com", 22, "LoginUser", "", , , , , ПараметрыСоединения, Аутентификация);
ФТП.Записать("C:\temp\data.xml", "/upload/data.xml");

Сценарий 2: Использование COM-объекта WinSCP (Для старых версий 1С)

Если обновление платформы невозможно, стандартом де-факто является использование бесплатной библиотеки WinSCP (.NET сборка COM-visible).

 1. Установите WinSCP и зарегистрируйте сборку (CMD от Администратора):
%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\regasm.exe WinSCPnet.dll /codebase /tlb:WinSCPnet.tlb

 2. Код 1С для вызова COM-объекта
Опции = Новый COMОбъект("WinSCP.SessionOptions");
Опции.Protocol = 3; // 3 = SFTP
Опции.HostName = "sftp.partner.com";
Опции.UserName = "LoginUser";
Опции.SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...";
Опции.SshPrivateKeyPath = "C:\keys\private.ppk";
 
Сессия = Новый COMОбъект("WinSCP.Session");
Сессия.Open(Опции);
Сессия.PutFiles("C:\temp\data.xml", "/upload/");
Сессия.Dispose();

Типовые ошибки программистов 1С

  • Попытка подключиться к SFTP (порт 22) через FTPS (FTPS over TLS): Это абсолютно разные протоколы (SSH vs SSL/TLS). На старых платформах код Новый FTPСоединение(..., Новый ЗащищенноеСоединениеOpenSSL()) на 22 порт выдаст сетевую ошибку.
  • Формат закрытого ключа: WinSCP принимает только ключи в формате .ppk (PuTTY Private Key). Платформа 1С 8.3.22 нативно ожидает ключи в формате OpenSSH / PEM. Если вам дали ключ id_rsa, а вы используете WinSCP — нужно конвертировать его через утилиту PuTTYgen.
Проблемы с интеграцией и устаревшие платформы мешают развитию?
Разработчики ITSTM реализуют любые B2B интеграции (SFTP, REST/SOAP API, AS2) даже на сильно кастомизированных конфигурациях 1С (УПП, УТ 10.3) без необходимости рискованного обновления технологической платформы.
💡 Практика специалистов: Практика ITSTM: При построении корпоративных обменов мы не рекомендуем хранить логины, пароли и пути к SSH-ключам жестко в коде 1С (хардкод). Выносите эти параметры в специальные регистры сведений, а сами файлы закрытых ключей (PEM/PPK) шифруйте средствами ОС (EFS) с доступом исключительно для аккаунта службы 1С-сервера.

Частые вопросы (FAQ)

Как получить отпечаток ключа хоста (SshHostKeyFingerprint) для WinSCP?

Подключитесь к SFTP серверу вручную через графический клиент WinSCP. При первом подключении появится окно с предупреждением и отпечатком ключа (например, ssh-ed25519 255 ...). Скопируйте эту строку в ваш код 1С.

Можно ли использовать curl через КомандаСистемы() для SFTP?

Да. Это альтернатива COM-объекту, работающая и на Linux-серверах 1С. Команда выглядит так: curl -T 'file.xml' sftp://server.com/upload/ --user 'login:password' -k. Но парсить ошибки (ExitCode) придется через чтение stdout из временных файлов.

Почему COM-объект WinSCP работает на клиенте, но выдает ошибку на сервере (в фоновом задании)?

Библиотека WinSCPnet.dll должна быть зарегистрирована на самом сервере 1С (где крутится процесс rphost), причем если сервер 64-битный, нужно использовать 64-битный regasm.exe. Также у пользователя USR1CV8 (от которого работает служба) должны быть права NTFS на чтение файла закрытого ключа.

Поддерживает ли 1С аутентификацию на SFTP только по паролю, без ключей?

Да, поддерживает (с 8.3.22). В этом случае объект ЗащищенныйКлючSSH создавать не нужно. Достаточно передать логин и пароль в стандартные параметры конструктора FTPСоединение, а параметр Аутентификация оставить пустым.

Полезные материалы
Рекомендуем