Перейти к основному содержимому

Работа с SSH и SFTP

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

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

Для работы с SSH и SFTP используются следующие типы:

  • СоединениеSsh — интерфейс для взаимодействия по протоколу SSH. Для создания соединения используйте один из конструкторов типа. Чтобы задать настройки соединения, используйте тип НастройкиСоединенияSsh.
  • КонсольSsh — интерфейс для взаимодействия с удаленной консолью, которая позволяет выполнять произвольный набор команд. Для получения экземпляра типа используйте метод СоединениеSsh.ОткрытьКонсоль().
  • СоединениеSftp — интерфейс для взаимодействия с сервером по протоколу SFTP: позволяет просматривать содержимое каталогов, загружать файлы на сервер или скачивать их с сервера, перемещать и переименовывать файлы. Для получения экземпляра типа используйте метод СоединениеSsh.ОткрытьСоединениеSftp().
  • ФайлSftp — предоставляет информацию о файле или каталоге, размещенном на сервере.

Примеры

Работа с конфигуратором «1С:Предприятия» в режиме агента

Поддержка протокола SSH позволяет вам использовать режим агента конфигуратора «1С:Предприятия» для удаленной программной работы с конфигуратором из «1С:Предприятие.Элемента Скрипта». Вы можете автоматизировать выполнение таких административных задач, как подключение к информационной базе, загрузка/выгрузка конфигураций, обновление конфигурации базы данных и т. д.

Пример работы с конфигуратором «1С:Предприятия» в режиме агента:

метод ВыгрузитьКонфигурацию(Файл: Строка|Файл, Пользователь: Строка, Пароль: Секрет)
исп СоединениеАгент = новый СоединениеSsh("192.168.0.3", 1543, Пользователь, Пароль)
исп Агент = СоединениеАгент.ОткрытьКонсоль()
Агент.СтрокаПриглашения = "designer> "

// Подключение к информационной базе
Агент.Выполнить("common connect-ib")
// Сохранение конфигурации в файл
Агент.Выполнить("config dump-cfg --file=configuration.dmp", )

// Использование протокола SFTP для обмена файлами с агентом
исп СоединениеSftp = новый СоединениеSsh("192.168.0.3", 1543, Пользователь, Пароль)
исп Sftp = СоединениеSftp.ОткрытьСоединениеSftp()
// Скачивание файла конфигурации на локальный компьютер
Sftp.Получить("configuration.dmp", Файл)
// Удаление файла конфигурации с сервера
Sftp.Удалить("configuration.dmp")
;

Создание SSH-туннеля

SSH-туннелирование (или проброс портов) используется для безопасного доступа к удаленным сервисам и маршрутизации сетевого трафика. Вы можете настроить перенаправление трафика с определенного порта на локальном компьютере на другой порт на удаленном сервере, и наоборот. Настройка SSH-туннелирования осуществляется с помощью методов ПеренаправлениеЛокальногоПорта() и ПеренаправлениеУдаленногоПорта() типа НастройкиСоединенияSsh.

Пример работы с конфигуратором «1С:Предприятия» в режиме агента через SSH-туннель:

метод УстановитьПодключениеЧерезТуннель()
знч Настройки = новый НастройкиСоединенияSsh()
Настройки.УстановитьПароль("password")
Настройки.ПеренаправлениеЛокальногоПорта(1543, "192.168.0.3", 1543)
исп новый СоединениеSsh("212.212.212.212", 1543, "user", Настройки) // соединение-туннель
// Цепочка туннелей может быть продолжена...

исп СоединениеАгент = новый СоединениеSsh("212.212.212.212", 1543, "admin", "password")
исп Агент = СоединениеАгент.ОткрытьКонсоль()
Агент.СтрокаПриглашения = "designer> "
Агент.Выполнить("-v")
;

Вывод промежуточных результатов

Пример сохранения промежуточных результатов в файл в процессе выполнения заданной команды в удаленной консоли КонсольSsh:

метод ЗаписатьВФайл(Сервер: Строка, Пользователь: Строка, Пароль: Секрет)
пер Лог = новый Файл("log.txt")

исп Соединение = новый СоединениеSsh(Сервер, Пользователь, Пароль)
исп Консоль = Соединение.ОткрытьКонсоль(Ложь)
Консоль.СтрокаПриглашения = "строка приглашения"
Консоль.Отправить("команда")

пока не Консоль.ОжидатьПриглашение()
Консоль.ПотокВывода.КопироватьВФайл(Лог, ЗаписатьВКонец = Истина)
;
;

Загрузка файла на сервер по протоколу SFTP

метод ЗагрузитьФайл(Файл: Файл, Пользователь: Строка, Пароль: Секрет)
исп Соединение = новый СоединениеSsh("192.168.0.3", Пользователь, Пароль)
исп Sftp = Соединение.ОткрытьСоединениеSftp()
Sftp.УстановитьТекущийКаталог("/data/")
Sftp.Поместить(Файл, Таймаут = 15с)
;