You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chef中SFTP远程文件下载功能异常,请求排查解决

解决Chef remote_file SFTP下载的两类常见问题

我来帮你梳理下遇到的这两个问题,给你对应的解决方案和排查思路:

第一个错误:SocketError - getaddrinfo: No such host is known.

这个报错本质是Chef节点没法找到packages.domain.com这个主机,大概率是下面两种情况之一:

  • 主机名解析失败:先在Chef节点上手动ping一下packages.domain.com,看能不能得到IP地址。如果ping不通,要么是DNS配置有问题,要么是这个主机名本身就不对,试试直接用服务器的IP地址替换主机名再测试。
  • SFTP URI格式小问题:虽然你写的端口22是SFTP默认端口,但有时候Chef对URI的解析会因为多余的端口号出小问题,你可以先去掉:22试试,简化成sftp://myusername:mypassword@packages.domain.com/package/Adnet.EASS.zip。另外如果用户名或密码里有特殊字符(比如@、/这类),必须要做URL编码,不然会破坏URI结构。

第二个错误:"no userinfo provided in the sftp URI"

这里要注意:Chef的remote_file资源不支持用remote_user和remote_password这两个参数来传递SFTP的凭据,这俩参数是给HTTP/HTTPS的基础认证用的,SFTP不认。

正确的做法:把凭据嵌入SFTP URI

如果你的用户名和密码都是普通字符(没有特殊符号),直接写在URI里就行,就像你最开始的写法,但要先解决前面的主机解析问题:

remote_file 'C:/adnet/mercury_package/Adnet.EASS.zip' do
  source 'sftp://myusername:mypassword@packages.domain.com/package/Adnet.EASS.zip'
  action :create
end

要是密码里有特殊字符,比如密码是my@pass/123,得把特殊字符URL编码:@换成%40,/换成%2F,变成sftp://myusername:my%40pass%2F123@packages.domain.com/package/Adnet.EASS.zip。

更安全的方案:用SSH密钥认证

硬写密码在代码里太不安全了,推荐用SSH密钥对来做SFTP认证:

  1. 先生成一对SSH密钥(Windows可以用PuTTYgen,Linux/macOS用ssh-keygen),把公钥上传到SFTP服务器的~/.ssh/authorized_keys文件里。
  2. 修改Chef代码,指定私钥路径:
remote_file 'C:/adnet/mercury_package/Adnet.EASS.zip' do
  source 'sftp://packages.domain.com/package/Adnet.EASS.zip'
  ssh_options keys: ['C:/path/to/your/private_key']
  action :create
end

如果私钥设置了密码短语,再加个passphrase参数就行:

remote_file 'C:/adnet/mercury_package/Adnet.EASS.zip' do
  source 'sftp://packages.domain.com/package/Adnet.EASS.zip'
  ssh_options keys: ['C:/path/to/your/private_key'], passphrase: 'your_key_passphrase'
  action :create
end

额外的排查小技巧

在Chef代码跑之前,先手动在节点上测试SFTP连接是否正常:

  • Windows可以用PSFTP工具,输入psftp myusername@packages.domain.com,输入密码看能不能连上。
  • Linux/macOS直接在终端敲sftp myusername@packages.domain.com测试。
    同时也要确认节点的防火墙或安全组允许对外访问22端口,不然也会连不上。

内容的提问来源于stack exchange,提问作者Janjko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:24:10