Всем привет!
Надеюсь, что вы уже прочитали мой пост ранее.
В данной статье я хочу поделиться о возможных трудностях с которыми можно столкнуться при работе с 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) и всё опять начинает работать!