При настройке обмена данными между конфигурациями (например, между Зарплата и кадры государственного учреждения и Бухгалтерия государственного учреждения) специалисты часто сталкиваются с ситуацией, когда стандартная проверка подключения к FTP-серверу завершается ошибкой Login denied. При этом системные администраторы утверждают, что через сторонние утилиты, такие как FileZilla или WinSCP, подключение проходит успешно под теми же учетными данными.
В этой статье мы подробно разберем, почему платформа 1С:Предприятие может выдавать ошибку аутентификации, когда другие программы работают, и проанализируем пошаговый алгоритм решения этой задачи.
Ошибка Login denied (отказ в доступе) чаще всего возникает в момент вызова конструктора FTPСоединение. Если мы обратимся к журналу регистрации, то увидим стек вызовов, указывающий на модуль ТранспортСообщенийОбменаFTP. Рассмотрим типовой фрагмент кода, который инициирует подключение:
// Пример стандартного вызова в платформе
FTPСоединение = Новый FTPСоединение(
ПараметрыПодключения.Адрес,
ПараметрыПодключения.Порт,
ПараметрыПодключения.Пользователь,
ПараметрыПодключения.Пароль,
ПараметрыПодключения.Прокси,
ПараметрыПодключения.ПассивныйРежим,
ПараметрыПодключения.Таймаут
);
Выясним причину, по которой сервер возвращает 530 код ответа (традиционный код для Login denied). Несмотря на то, что сообщение выглядит как «неверный логин или пароль», в контексте 1С проблема часто кроется в режиме передачи данных или настройках сетевого окружения.
Это самая распространенная причина. Большинство современных FTP-серверов находятся за брандмауэрами (Firewalls) или NAT. В активном режиме сервер пытается сам инициировать соединение с клиентом для передачи данных, что часто блокируется защитными системами на стороне пользователя. В пассивном режиме клиент сам открывает порты для обмена данными.
По умолчанию в некоторых версиях 1С или при программном создании объекта этот параметр может быть установлен в Ложь. Проанализируем ситуацию: FileZilla автоматически определяет нужный режим (чаще всего пассивный), а 1С жестко следует заданным настройкам.
Что нужно сделать:
FTPСоединение установлен в значение Истина.
// Правильная инициализация с пассивным режимом
ПассивныйРежим = Истина;
Таймаут = 30;
Соединение = Новый FTPСоединение("srv-arc", 21, "user1", "P@ssword", , ПассивныйРежим, Таймаут);
Разберем специфическую особенность платформы 1С. При передаче пароля в объект FTPСоединение, платформа может некорректно обрабатывать определенные символы, такие как @, :, /, %. Это связано с тем, как формируется строка запроса к серверу внутри программного ядра.
Если ваш пароль содержит сложные знаки, сервер может интерпретировать часть пароля как адрес или порт, что приведет к ошибке Login denied. Попробуйте выполнить простой тест: временно установите на FTP-сервере простой буквенно-цифровой пароль (например, Test12345) и проверьте соединение из 1С. Если это помогло — значит, проблема была в спецсимволах.
Рассмотрим ситуацию, когда 1С запущена в клиент-серверном варианте. Код подключения к FTP выполняется на стороне сервера 1С (процесс rphost.exe) под учетной записью службы (обычно USR1CV8).
Проанализируем возможные препятствия:
Чтобы исключить влияние прокси, рекомендуется явно передавать пустой объект прокси в конструктор:
// Отключение использования прокси
Прокси = Новый ИнтернетПрокси(Ложь); // Указываем не использовать системные настройки
Соединение = Новый FTPСоединение("srv-arc", 21, "user", "pass", Прокси, Истина);
Современные требования безопасности заставляют администраторов отключать «чистый» FTP и использовать FTP over TLS/SSL (FTPS). FileZilla умеет автоматически переключаться на шифрованное соединение.
Если ваш сервер требует безопасного соединения, обычный конструктор FTPСоединение выдаст Login denied, так как сервер отклонит попытку передачи пароля в открытом виде. В 1С для этого необходимо использовать объект ЗащищенноеСоединениеOpenSSL.
// Пример использования защищенного соединения
Защита = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый FTPСоединение("srv-arc", 21, "user", "pass", , Истина, 30, Защита);
Выясним еще одну причину: иногда ошибка аутентификации возникает не из-за логина, а из-за того, что 1С после входа пытается выполнить команду PWD (узнать текущий каталог) или LIST, чтобы проверить работоспособность.
Если у пользователя FTP ограничен доступ (он «заперт» в своей папке — chroot jail) и у него нет прав на чтение корневого списка файлов, 1С может интерпретировать этот отказ как общую ошибку подключения. Убедитесь, что у пользователя достаточно прав не только на запись файла, но и на просмотр содержимого папки, указанной в настройках обмена.
Подведем итог. Если вы столкнулись с Login denied, пройдите по следующим шагам:
Соблюдение этих рекомендаций позволяет решить проблему в 99% случаев, обеспечивая стабильную синхронизацию между ЗКГУ, БГУ и другими конфигурациями.