加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 通过Net错误“非绝对主页”:SSH

发布时间:2020-12-17 04:37:34 所属栏目:百科 来源:网络整理
导读:有问题的代码 Net::SSH.start('server name','user') 这将返回“非绝对的家”. “用户”实际上确实有一个主目录.一种建议的方法是使用IdentityFile的完整路径修改?/ .ssh / config.这并没有解决问题. 这个疯狂的部分是,如果通过irb或控制台调用代码可以正常
有问题的代码
Net::SSH.start('server name','user')

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

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

‘用户’也可以通过命令行ssh进入服务器而不会出现问题.服务器正在运行Ubuntu.

UPDATE

感谢@Phrogz – 解决这个问题的方法是将ENV [‘HOME’]设置为’/ home / deploy’.但是,我还没弄清楚为什么$HOME被设置为“.”在服务器上.所以,在我或其他人明白这一点之前,我会在没有“答案”的情况下提出这个问题.必须手动设置HOME感觉更像是一个“黑客”而不是一个合适的解决方案,但它确实有效.

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读