通过 Net:SSH 出现“非绝对主页”错误

2023-11-27

有问题的代码

Net::SSH.start('server name', 'user')

这返回“非绝对家”。 “用户”实际上有一个主目录。一种建议的方法是使用 IdentityFile 的完整路径修改 ~/.ssh/config。这并没有解决问题。

最疯狂的部分是,如果通过 irb 或控制台调用,代码可以正常工作。当我们尝试从类方法中调用它时(使用相同的代码),它会返回“非绝对主页”错误。

“用户”还可以通过命令行 ssh 进入服务器,不会出现问题。服务器运行的是 Ubuntu。

UPDATE

感谢@Phrogz - 解决此问题的方法是将 ENV['HOME'] 设置为 '/home/deploy'。但是,我还没有弄清楚为什么 $HOME 被设置为“。”在服务器上。因此,我将保留这个问题,不给出“答案”,直到我或其他人弄清楚这一点。必须手动设置 HOME 感觉更像是“黑客”而不是正确的解决方案,但它确实有效。


我们刚刚遇到了同样的问题,并找到了根本原因。我们将脚本作为服务运行,如果您检查服务的联机帮助页,它会在运行脚本之前删除大多数环境变量,包括 HOME。不知道你的情况是否一样,但是HOME没有设置。

net-ssh 想要从用户主文件夹查找 ssh 配置,因此它用于强制 ENV['HOME'] 为“.”如果没有设置。但是当 File.expand_path 尝试扩展“~/.ssh”时,会引发 ArgumentError 。

这个问题两个月前就已经修复了(https://github.com/net-ssh/net-ssh/pull/98),所以更新你的 net-ssh gem 应该可以解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Net:SSH 出现“非绝对主页”错误 的相关文章

随机推荐

  • 以编程方式更改 PowerShell 控制台字体

    我开发了一个使用 PowerShell 充当基于控制台的应用程序 例如 ncurses 的脚本 字体露西达控制台在脚本的快捷方式中配置 我想为用户提供更改字体大小的能力 以下模块就是这样做的 但是字体始终重置为 光栅字体 https 4sy
  • Ajax.ActionLink 与 mvc 核心的替代方案

    在MVC5中有 Ajax ActionLink这对于仅更新部分视图而不是重新加载整个视图很有用 显然在 MVC6 中不再支持 我尝试过使用 Html ActionLink如下所示 但它不会更新表单 它仅返回部分视图 View Html Ac
  • 模板类中对友元函数的未定义引用

    以下代码位于Heap h文件中 template
  • 攻击者可以有害地使用检查元素吗?

    我知道这是一个广泛的问题 但我认为我在这里遗漏了一些东西 攻击者是否可以通过简单地使用检查元素并编辑 javascript 和 html 来对站点造成损坏 例如 对于某人来说 更改输入的最大长度并上传太多数据可能会导致服务器崩溃 这似乎太容
  • C# 中的数组大小(长度)

    如何在 C 中确定数组的大小 长度 项目数 如果是一维数组a a Length 将给出的元素数量a If b是一个矩形多维数组 例如 int b new int 3 5 b Rank 将给出维数 2 和 b GetLength dimens
  • 多处理函数上的超时装饰器

    我有这个装饰器直接取自我在网上找到的一个例子 class TimedOutExc Exception pass def timeout timeout def decorate f def handler signum frame rais
  • 如何从 Azure DevOps 部署到 AWS Kubernetes

    我使用 Azure DevOps 来处理 PBI 存储库 PRS 和构建 但我的所有基础设施 包括 Kubernetes 均由 AWS 管理 没有文档 也没有关于如何使用 Azure DevOps 任务部署到 AWS EKS 的 正确且简单
  • 翻译动画的工作原理:Android

    我正在尝试移动一个RelativeLayout using TranslateAnimation 我为执行相同操作而编写的代码是 translateAnimation new TranslateAnimation 0 0 heightOfR
  • Spring HandlerInterceptors是如何实例化的?

    每个请求是否都有一个新的 Spring HandlerInterceptors 实例 我在 Spring 中有一个拦截器 它有一个类字段 public class MyInterceptor extends HandlerIntercept
  • 在 Cocoa KVO 中,为什么 NSMutableArray 代理上的更改不会通知观察者?

    我正在实施一个DocumentsManageriOS 中的类 我想创建一个名为的多对多属性documents符合 KVO 要求 它似乎大部分工作 并且我的 KVO 访问器和修改器方法被调用 然而 令我困扰的是 直接在NSMutableArr
  • 使用facet时ggplot2在面板边框之外

    我希望在多面图的外部有一个边框 但没有分隔图内面板的线 问题是 panel border 在构面中的每个面板周围绘制一个边框 而没有选择只在整个图周围有一个边框 或者 您可以将内部分隔线设置为 白色 但保持外部边框为 黑色 这是我的代码 m
  • Xcode 项目范围编译器标志

    使用 Xcode 4 2 和 LLVM 编译器 在针对 ARMv6 进行编译时 生成的应用程序中存在一些非常奇怪的错误 例如 CGSize 的 width 属性返回 height 为了解决这个问题 我发现我必须设置编译器标志 mno thu
  • 如何使用 requests 库发送 xml 正文?

    def request encoded xml urllib urlencode XML read xml encoded xml read xml headers Authorization AUTH TOKEN developerTok
  • 为什么应用太多参数会抛出“超出最大调用堆栈大小”?

    在 Chrome 和 Node 中 以下代码会引发错误 function noop var a new Array 1e6 Array 1000000 noop apply null a Uncaught RangeError Maximu
  • addActionListener 有什么作用?

    我有以下代码 JButton button new JButton Clear button addActionListener this 据我了解 我创建了一个按钮 上面写着 清除 然后我必须将一个动作与这个按钮关联起来 如果按下按钮会发
  • Python gc.get_count() 返回的 count0、count1 和 count2 值是什么

    python gc 包的文档对 gc get count 做了这样的描述 gc get count Return the current collection counts as a tuple of count0 count1 count
  • 在 Javascript 中使用引号和 innerHTML

    我编写了一些代码来让玩家了解故事的进展 当玩家单击按钮时 他们会看到一些新文本和更多选项 到目前为止一切顺利 但是当我传递带有附加参数的函数调用时 我需要单引号和双引号 但是 如果我同时使用两者 则会破坏innerHTML 代码如下 如果需
  • 如何获取JButton默认背景颜色?

    我用这个myButton setBackground myColor 改变JButton背景颜色为我的颜色 如何找到它原来的默认背景颜色 以便我可以将其更改回来 我知道我可以在更改和使用它之前保存它的默认背景颜色 但我想知道 Java 是否
  • 如何从 Json.NET 获取密钥列表?

    我正在使用 C 和 Json NET 如果我有一个 JObject 我想要对象内的键列表 类似于object Keys 返回对象内的键 这似乎是显而易见的 但我很难找到一种方法来做到这一点 Edit 我正在遍历该对象 并且我想在遍历时吐出对
  • 通过 Net:SSH 出现“非绝对主页”错误

    有问题的代码 Net SSH start server name user 这返回 非绝对家 用户 实际上有一个主目录 一种建议的方法是使用 IdentityFile 的完整路径修改 ssh config 这并没有解决问题 最疯狂的部分是