本发明涉及计算机信息安全的技术领域,特别涉及一种自动配置ssh无密码访问的方法及系统。
背景技术:
在计算机信息安全的技术领域中,ssh即Secure Shell(安全Shell),是一种通用的、功能强大的、基于软件的网络安全解决方案,ssh是Unix系统中r系命令的一个安全的替代工具,它使得远程访问的身份识别和鉴定的对称和非对称加密变得简单,改善了服务器端的inetd提供的功能,计算机每次想网络发送数据时,ssh都会自动对其进行加密,数据到达目的地时,ssh自动对加密数据进行解密,整个过程都是透明的,目前,Unix、Linux、FreeBSD系统都支持ssh。
然而,在现有技术中,运行程序时访问ssh通常是要输入密码进行访问的,或者开发者需要通过手动使用命令配置无密码访问,导致ssh的访问变得复杂化,假如是无开发经验的普通用户想访问ssh时则需要不断地输入密码。
技术实现要素:
基于现有技术中存在的问题,本发明提出了一种自动配置ssh无密码访问的方法及系统,使用Linux bash语言编写测试程序来实现,解决了服务器间ssh登录是繁琐的密码输入问题,同时登录命令中,用被访问节点的hostname来代替IP,可以在不用记忆IP的情况下访问节点,便于管理和使用。
一种自动配置ssh无密码访问的方法,其特征在于:使用ssh-keygen生成公钥,将所述公钥拷贝到从节点.ssh/目录下,配置hostfile文件;运行ssh主脚本,对所有要配置的节点做ping操作,确保网络互通;在所述ssh主脚本中调用第一子脚本,生成私钥,并将所述公钥的内容写入authorized_keys文件中,并赋予执行权限,在所述ssh主脚本中调用第二子脚本以及第三脚本,当提示需要输入密码时自动输入密码。
其中,所述配置hostfile文件具体为,将服务器集群中所有要配置节点的主机名添加到所述hostfile文件中。
其中,在所述ssh主脚本中调用第二、三子脚本时,将需要输入的密码传递给第第二、三子脚本。
其中,所述网络节点IP在同一网段。
其中,所述脚本由Linux bash语言编写。
一种自动配置ssh无密码访问的系统,其特征在于:包括配置模块,用于使用ssh-keygen生成公钥,将所述公钥拷贝到从节点.ssh/目录下,配置hostfile文件;脚本运行模块,用于运行ssh主脚本,对所有要配置的节点做ping操作,确保网络互通;脚本调用模块,用于在所述ssh主脚本中调用第一子脚本,生成私钥,并将所述公钥的内容写入authorized_keys文件中,并赋予执行权限,在所述ssh主脚本中调用第二子脚本以及第三脚本,当提示需要输入密码时自动输入密码。
其中,所述配置hostfile文件具体为,将服务器集群中所有要配置节点的主机名添加到所述hostfile文件中。
其中,在所述ssh主脚本中调用第二、三子脚本时,将需要输入的密码传递给第第二、三子脚本。
其中,所述网络节点IP在同一网段。
其中,所述脚本由Linux bash语言编写。
由以上可知,本发明公开了一种自动配置ssh无密码访问的方法及系统,由Linux bash语言编写测试程序,解决了ssh无密码访问配置的技术问题,实现了服务器集群系统在系统测试或运维测试中对多节点的无密码访问批量操作,无需记忆和输入每台服务器的密码,提高了远程操作效率。
附图说明
图1是本发明的方法流程图;
图2是本发明的系统框图。
具体实施例
如下阐述了具体的实施方案:
本发明提供了一种自动配置ssh无密码访问的方法,方法流程如附图1所示。
步骤101,使用ssh-keygen生成公钥,将所述公钥拷贝到从节点.ssh/目录下,配置hostfile文件;
其中,配置hostfile文件,则是将服务器集群中所有要配置节点的主机名hostname添加到hostfile文件中,以16个节点为例,hostname分别是m01到m16。
步骤102,运行ssh主脚本,对所有要配置的节点做ping操作,确保网络互通。
ssh主脚本为ssh.sh,伪代码为:
for i in`cat hostfile`;do ping$i-c 1;done
./step1.exp
#执行step1.exp脚本
./step2.exp 111111
#执行step2.exp脚本
./step3.exp 111111
#执行step3.exp脚本。
步骤103,在所述ssh主脚本中调用第一子脚本,生成私钥,并将所述公钥的内容写入authorized_keys文件中,并赋予执行权限,在所述ssh主脚本中调用第二子脚本以及第三脚本,当提示需要输入密码时自动输入密码。
如上述ssh.sh伪代码,在主脚本ssh.sh中调用第一子脚本step1.exp,生成私钥,并将所述公钥的内容写入authorized_keys文件中,并赋予执行权限,step1.exp子脚本的伪代码为:
然后调用第二子脚本step2.exp以及第三子脚本step3.exp,当提示需要输入密码时自动输入密码,第二子脚本step2.exp以及第三子脚本step3.exp的伪代码为:
第二子脚本step2.exp:
第三子脚本step3.exp:
本发明还提供了一种自动配置ssh无密码访问的系统,系统功能结构图如附图2所示。
所述系统包括:配置模块201,用于使用ssh-keygen生成公钥,将所述公钥拷贝到从节点.ssh/目录下,配置hostfile文件;
其中,配置hostfile文件,则是将服务器集群中所有要配置节点的主机名hostname添加到hostfile文件中,以16个节点为例,hostname分别是m01到m16。
脚本运行模块202,用于运行ssh主脚本,对所有要配置的节点做ping操作,确保网络互通。
ssh主脚本为ssh.sh,伪代码为:
for i in`cat hostfile`;do ping$i-c 1;done
./step1.exp
#执行step1.exp脚本
./step2.exp 111111
#执行step2.exp脚本
./step3.exp 111111
#执行step3.exp脚本。
脚本调用模块203,用于在所述ssh主脚本中调用第一子脚本,生成私钥,并将所述公钥的内容写入authorized_keys文件中,并赋予执行权限,在所述ssh主脚本中调用第二子脚本以及第三脚本,当提示需要输入密码时自动输入密码。
如上述ssh.sh伪代码,在主脚本ssh.sh中调用第一子脚本step1.exp,生成私钥,并将所述公钥的内容写入authorized_keys文件中,并赋予执行权限,step1.exp子脚本的伪代码为:
然后调用第二子脚本step2.exp以及第三子脚本step3.exp,当提示需要输入密码时自动输入密码,第二子脚本step2.exp以及第三子脚本step3.exp的伪代码为:
第二子脚本step2.exp:
第三子脚本step3.exp:
本发明的一种自动配置ssh无密码访问的方法及系统,是由Linux bash语言编写测试程序,解决了ssh无密码访问配置的技术问题,实现了服务器集群系统在系统测试或运维测试中对多节点的无密码访问批量操作,提高了远程操作效率,同时,无需记忆和输入每台服务器的密码,给用户以良好的用户体验。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本发明中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是符合与本文所公开的原理和新颖特点相一致的最宽的范围。