在使用perl脚本的时候,通过Net::OpenSSH去获取执行节点的信息是一种常用的方法。在某个环境中,执行命令的时候出错,下面展示一下相关的代码
my $ssh_ops = {user => "root", password => "password", master_opts => [-o => "UserKnownHostsFile=/dev/null", -o => "StrictHostKeyChecking=no"]};
my $ssh = Net::OpenSSH->new($host_ip, %$ssh_ops);
# while( my ($key,$value) = each %ssh) {
# if (defined $value) {
# print "\n==== debug: $key => $value\n";
# }
# }
$ssh->error and return "fail: cann't access by ssh";
在这段代码执行的时候,直接返回“fail: cann’t access by ssh” 通过手动的方式进行验证,在当前节点通过ssh方式是可以正常登录指定节点的。
将注释的内容放开,进行调试,打印出如下信息:
==== debug: _error => ctl_dir /root/.libnet-openssh-perl/ is not secure
==== debug: _host => 10.0.123.123
这个时候查看/root文件夹的权限
执行命令 :stat /root 23-08-03 - 13:45:41
File: '/root'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 802h/2050d Inode: 8912897 Links: 29
Access: (0775/drwxrwxr-x) Uid: ( 0/ root) Gid: ( 0/ root)
注意,这里的权限变为了0755,正常情况下 /root目录的权限应该是Access: (0550/dr-xr-x—)
使用chmod命令将/root文件夹的权限更改一下,再次执行就正常了。文章来源:https://www.toymoban.com/news/detail-631126.html
建议: 不要轻易更改/root等系统文件夹的属性,避免一些不必要的问题!文章来源地址https://www.toymoban.com/news/detail-631126.html
到了这里,关于perl脚本调用openssh不能正确执行(ctl_dir /root/.libnet-openssh-perl/ is not secure)的原因排查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!