无法在复制数据工具中连接到 SFTP(带有私钥文件)

mar*_*val 2 azure-data-factory

我正在尝试将数据从 SFTP 复制到 blob,但在创建 SFTP 源时遇到了困难。

我有连接详细信息,可以轻松连接 Filezilla 或 WinSCP。但是,我无法让它在 Azure 数据工厂中工作。

我不使用代码,而是使用用户界面。

创建 SFTP 源页面上的连接详细信息:通过集成运行时连接:AutoResolveIntegrationRuntime(默认)

Host: xyz

Port: 22 (can't remove it as it doesn't like it)

SSH Host Key Validation: Enable SSH Host Key Validation

SSH Host Key Finger-print: taken from WinSCP - Session - Server/protocol information

Authentication type: SSH Public Key Authentication   -can't use basic as the private key holds the security info

User name:XXX

Private Key Type: Use Key Content

Private key content: loaded the .ppk file, tried also tried loading the .pem file and got different errors

Pass Phrase: none
Run Code Online (Sandbox Code Playgroud)

在 WinSCP 或 FileZilla 中设置此 sftp 时,它会自动将提供的 .pem 文件转换为 .ppk。当我将 .ppk 文件加载到 ADF 中时,出现错误:为“SshPublicKey”身份验证类型提供的 Sftp 凭据无效。当我加载 .pem 文件时,我得到:连接到 Sftp 服务器“spiderftp.firstgroup.com”时遇到网络问题,SocketErrorCode:“TimedOut”。

我还尝试过 SSH 主机密钥验证中的“禁用 SSH 主机密钥验证”,但没有任何区别。

我还在 PuttyGen 中打开了 .ppk 文件并使用了该主机密钥指纹,但仍然没有成功。

仅根据我加载的文件出现这两个错误。

在网上找不到任何有关此内容的信息,因此将不胜感激您的一些建议。

Fan*_*Liu 6

您读过本文档中的注释吗?

https://learn.microsoft.com/en-us/azure/data-factory/connector-sftp#using-ssh-public-key-authentication

SFTP 连接器支持 RSA/DSA OpenSSH 密钥。确保您的密钥文件内容以“-----BEGIN [RSA/DSA] PRIVATE KEY-----”开头。如果私钥文件是ppk格式的文件,请使用Putty工具将.ppk格式转换为OpenSSH格式。


Nic*_*las 5

今天得到了这个工作。和您一样,可以使用 WinSCP 连接,但使用 ADF 时失败。

刘芳分享的链接包含了我们的答案,但我的问题不是私钥。我怀疑方的建议解决了您的问题,我在这里分享我的答案以帮助其他可能遇到类似问题的人。

我的问题: 在 ADF 中使用私钥身份验证时,密码将成为密码短语,并且您不再能够提供密码。为了解决这个问题,我们禁用了用户的密码身份验证,SFTP 连接开始工作。

如文档中所述。密码短语用于解密私钥(如果加密)

另外值得注意的是:

  1. 如果将私钥的内容存储在 Key Vault 中,则需要对导出的密钥的整个内容进行 Base64 编码并使用该字符串。这包括“-----BEGIN RSA PRIVATE KEY-----”和结尾。如果要将值粘贴到 SFTP 链接服务编辑屏幕的文本框中,同样适用。
  2. 我没有尝试手动编辑链接服务的 JSON 来显式提供密码,这可能是某人测试他们是否无法禁用密码的解决方法。
  3. 我使用 PuTTYGen 将 PPK 导出到私钥,并且也遇到了相同的指纹问题,因此我只是禁用了证书验证。有趣的是,您可以使用错误提供的指纹,并且它通过了验证,因此不确定错误所在。:-)