Возможные проблемы при работе с SFTP в SAS

Всем привет!

Надеюсь, что вы уже прочитали мой пост ранее.

В данной статье я хочу поделиться о возможных трудностях с которыми можно столкнуться при работе с SFTP.

Обычно при первом подсоединении SAS выдаёт следующее сообщение:

Looking up host. Connecting to 00.00.00.00 port 000
..
..
The server’s host key is not cached in the registry.
You have no guarantee that the server is the computer you think it is.
The server’s rsa2 key fingerprint is: ..
If you trust this host, enter «y» to add the key to PuTTY’s cache and carry on connecting.
If you want to carry on connecting just once, without adding the key to the cache, enter «n».
If you do not trust this host, press Return to abandon the connection.
Store key in cache? (y/n)
Решение этой проблемы лежит на поверхности: необходимо подсоединиться к серверу клиентом PUTTY, чтобы он запомнил fingerpring сервера в реестре.

HKEY_CURRENT_USERSoftwareSimonTathamPuTTYSshHostKeys

Так же официальная поддержка ссылается на документ в котором расписаны некоторые детали подключения по защищённым соединениям.

Но что будет, если вам надо запланировать или отправить на расписание процесс, которые использует SFTP соединение?
В этом случае в логах мы опять увидим сообщение, что ключ не зарегистрирован.

Дело в том, что запланированный процесс запускается не вами, а пользователем SASSRV или Stored Process Server (Spawned Servers). 

Как было указано ранее, для того, чтобы SAS сумел подсоединиться требуется запись в реестре. И тут возникает вопрос, а как сделать запись в реестре для пользователя SASSRV?
Я подозреваю, что есть несколько вариантов, но расскажу лишь про самый «колхозный» =)

Заходим в локальные политики User Rights Assignment Allow log on through Remote Desktop Services и добавляем туда пользователя SASSRV.
Если такого пользователя нет, то необходимо его создать в Server Manager.
Далее заходим в систему под SASSRV, запускаем Putty и подсоединяемся по SFTP.

Вуаля! Теперь всё работает!

До скорых встреч!

UPDATE:
Другая проблема может быть связана с настройками самого SFTP сервера. В этом случае в логах можно увидеть следующее сообщение:

ERROR: Public Key Authentication is required, Password validation is not supported.
ERROR: For further debugging assistance, insert the PSFTP verbose parameters «options=’-v’ debug» on the Filename sftp statement
and review the SAS log.
ERROR: Connection refused, check key authentication and sshd server status.

Одним из возможных  решений данной проблемы может быть указание дополнительных опций в FILENAME statement. Необходимо добавить следующий параметр:

filename XXX sftp <options> WAIT_MILLISECONDS=XXXX;

То есть, мы искусственно добавляем время ожидания сервера, например до 5 секунд (5000) и всё опять начинает работать! 

Настройка SFTP в SAS 9.2-9.3

Доброго времени суток, уважаемые читатели!

В этой статье речь пойдёт об использовании доступа к SFTP серверам через ключ авторизации.
Хочу сразу отметить, что способ подключения достаточно похож с FTP, но имеет ряд нюансов с которыми придётся столкнуться.


Во-первых, для доступа к SFTP потребуется полностью установленный клиент Putty.
Во-вторых, требуется прописать путь к тому же Putty в системной переменной PATH.
В-третьих, нужно знание (синтаксиса) команд, которые передаются через psftp.exe.

Итак, общая схема подключения к серверу SFTP аналогична с FTP.
Для этого используется следующая структура:
FILENAME fileref SFTP ‘external-file‘ <sftp-options>; 
Основные настройки можно прочитать тут.

Пример:
filename example sftp «name» cdpath» hosthostname»
      options = ‘optionsuserusername» debug;

К сожалению, этого куска кода не достаточно, чтобы работать с SFTP. Всё дело в том, что разобраться с параметром options требует немало времени. По крайней мере до версии SAS 9.4.
В этот параметр записываются значения, которые использует программа PSFTP.EXE из стандартного набора putty.

Теперь по порядку:

  1. Устанавливаем полный клиент Putty.
  2. Прописываем путь в системной переменной PATH. Например для Windows Server 2008, правой кнопкой по значку мой компьютер -> Advanced System Properties ->  Environment Variables. Далее ищем среди системных переменных PATH и добавляем после точки с запятой путь, куда был установлен PUTTY. 
  3. Теперь можно использовать опции для настройки подсоединения по SFTP:
    • -V        печатает версию и выходит
    • -pgpfp печатает PGP fingerprints и выходит
    • -b file   использует batch файл (*.bat)
    • -bc      выводит на экран команды из batch файла
    • -be       игнорирует ошибки работы batchfile
    • -v        выводит подробные сообщения (лог)
    • -load sessname  использует данные предыдущей sessname (подключения)
    • -l user   соединение по определённому пользователю
    • -P port   соединение по определённому порту  
    • -pw passw соединение по определённому паролю 
    • -1 -2     использование SSH протокола версии 1 или 2
    • -4 -6     использование IPv4 или IPv6
    • -C       использование компрессии
    • -i key    private key для аутентификации 
    • -noagent  запрет использования Pageant  
    • -agent    использование Pageant  
    • -batch    запрет на любые интерактивные запросы

В итоге, приведу пример кода, если вы используете аутентификацию по ключу, подсоединяетесь по имени пользователя и определённому порту.
Пример кода для параметра options:

options =   ‘-P 666
                    -i c:private.ppk
                    -pw password’

Важно: ключевые  параметры (типа -P) чувствительны к регистру!!

Надеюсь, что статья оказалась полезна!
До скорых встреч!