ctl_dir /root/.libnet-openssh-perl/ 在 /usr/local/share/perl/5.18.2/Net/OpenSSH/Compat/Perl.pm 第 123

Posted

技术标签:

【中文标题】ctl_dir /root/.libnet-openssh-perl/ 在 /usr/local/share/perl/5.18.2/Net/OpenSSH/Compat/Perl.pm 第 123 行不安全【英文标题】:ctl_dir /root/.libnet-openssh-perl/ is not secure at /usr/local/share/perl/5.18.2/Net/OpenSSH/Compat/Perl.pm line 123 【发布时间】:2016-09-13 02:53:31 【问题描述】:

我最近安装了 Net::OpenSSH::Compat::Perl。所有依赖项均已安装,没有任何错误。但是当我尝试使用以下代码登录时

$linux_ses= Net::OpenSSH::Compat::Perl->new($host);
$linux_ses->login($linux_uname,$linux_pass); 

我收到以下错误消息:

“。”

我以root身份运行脚本,/root/.libnet-openssh-perl/的文件权限为700。

【问题讨论】:

【参考方案1】:

/root/ 上的权限可能太松了。组可写可能意味着能够由 root 以外的其他人删除 .libnet-openssh-perl/,这不是一个安全的情况。

请检查。

【讨论】:

谢谢@edehont。我将权限更改为 700。我仍然面临同样的问题。 我将 /root/.libnet-openssh-perl/ 的权限更改为 500。它起作用了。此链接 -link 建议该文件只能由当前用户写入。但它没有提到它不应该是可执行的。您能否提供更多见解? 我收到以下错误无法建立主SSH连接:无法建立目标主机的真实性;远程主机公钥可能不存在于 /usr/local/share/perl/5.18.2/Net/OpenSSH/Compat/Perl.pm 第 123 行的“~/.ssh/known_hosts”文件中。_ 。我使用 SSH 客户端进行了 SSH,并且由于添加了公钥,它现在可以工作了。 Net::OpenSSH::Compat::Perl 不获取远程主机的公钥吗? 目录应该是“可执行的”(否则您无法搜索它们),但文件不应该是“可执行文件”,除非它们是可执行文件。 不询问就接受主机指纹可能存在安全风险。像您一样手动获取遥控钥匙是正确的方法。但是,您可以在本地 ssh 配置中使用“StrictHostKeyChecking yes”选项覆盖该问题。当远程主机密钥更改时,您仍然必须使用手动 ssh 会话将其导入,或者手动从 known_hosts 中删除旧的。您可以说服 ssh 将主机密钥存储在 /dev/null 中,因此每个主机始终被视为新主机。但这是一个非常肮脏的伎俩,我不推荐。

以上是关于ctl_dir /root/.libnet-openssh-perl/ 在 /usr/local/share/perl/5.18.2/Net/OpenSSH/Compat/Perl.pm 第 123 的主要内容,如果未能解决你的问题,请参考以下文章