Работа с SSH и SFTP
Протокол SSH широко используется для администрирования серверов и отдельных сервисов. Через этот протокол можно получить доступ к консоли удаленного сервера. Протокол SFTP предназначен для выполнения операций с файлами (копирования, переименования и т. п.) поверх надежного и безопасного соединения.
Типы
Для поддержки SSH используется набор типов:
- 
СоединениеSsh— предоставляет интерфейс для взаимодействия по протоколу SSH. Экземпляр этого типа вы можете получить с помощью одного из конструкторов.
- 
КонсольSsh— предоставляет интерфейс для взаимодействия с удаленной консолью, с помощью которой можно выполнять произвольный набор команд. ЭкземплярКонсольSshвозвращается методомСоединениеSsh.ОткрытьКонсоль().
- 
СоединениеSftp— предоставляет интерфейс для взаимодействия с сервером по протоколу SFTP. ЭкземплярСоединениеSftpвозвращается методомСоединениеSsh.ОткрытьСоединениеSftp().
Приме ры
Работа с файлами
Пример работы с файлами:
@НаСервере
метод ЗагрузитьФайл(Файл: Файл, Пароль: Секрет)
    исп Соединение = новый Соед инениеSsh("192.168.0.3", "user", Пароль)
    исп Sftp = Соединение.ОткрытьСоединениеSftp()
    Sftp.УстановитьТекущийКаталог("/tmp/")
    Sftp.Поместить(Файл, Таймаут = 15с)
;
Использование режима агента
Поддержка SSH позволяет вам использовать режим агента конфигуратора из «1С:Шины». Пример работы с конфигуратором «1С:Предприятия» в режиме агента:
@НаСервере
метод ВыгрузитьКонфигурацию(Файл: Строка|Файл, Пароль: Секрет)
    исп СоединениеАгент = новый СоединениеSsh("192.168.0.3", 1543, "admin", Пароль)
    исп Агент = СоединениеАгент.ОткрытьКонсоль()
    Агент.СтрокаПриглашения = "designer> "
    Агент.Выполнить("common connect-ib")
    Агент.Выполнить("config dump-cfg --file=configuration.dmp", 1м)
    исп СоединениеSftp = новый СоединениеSsh("192.168.0.3", 1543, "admin", Пароль)
    исп Sftp = СоединениеSftp.ОткрытьСоединениеSftp()
    Sftp.Получить("configuration.dmp", Файл)
    Sftp.Удалить("configuration.dmp")
;
Использование SSH-туннеля
Пример использования SSH-туннеля:
@НаСервере
метод УстановитьПодключениеЧерезТуннель(SshТуннельПароль: Секрет, SshАгентПароль: Секрет)
    знч Настройки = новый НастройкиСоединенияSsh()
    Настройки.УстановитьПароль(SshТуннельПароль)
    Настройки.УстановитьТаймаутПодключения(10с)
    Настройки.ПеренаправлениеЛокальногоПорта(1543, "192.168.0.3", 1543)
    исп СоединениеТуннель = новый СоединениеSsh("212.212.212.212", 1543, "user", Настройки)
    исп СоединениеАгент = новый СоединениеSsh("127.0.0.1", 1543, "admin", SshАгентПароль)
    исп Агент = СоединениеАгент.ОткрытьКонсоль()
    Агент.СтрокаПриглашения = "designer> "
    Агент.Выполнить("-v")
;
Вывод промежуточных результатов
Пример вывода промежуточных результатов в процессе выполнения команды в КонсольSsh:
@НаСервере
метод ЗаписьВФайлСВыводом(Пароль: Секрет)
    пер Лог = новый Файл("log.txt")
    исп Соединение = новый СоединениеSsh("ssh-server", 22, "user", Пароль)
    исп Консоль = Соединение.ОткрытьКонсоль(Ложь)
    Консоль.СтрокаПриглашения = "Строка приглашения"
    Консоль.Отправить("команда")
    пока не Консоль.ОжидатьПриглашение(1с)
        Консоль.ПотокВывода.КопироватьВФайл(Лог, ЗаписатьВКонец = Истина)
    ;
;