2006-11-19

集群管理工具-ssh无须密码登录任意主机

本人用redhat el做过一个16节点的高性能运算集群,有过一些管理及开发经验,准备陆续发一些自己的集群系统管理与开发的经验,有讲得不对的地方还希望有经验的人士能指出。

言规正传,ssh是集群管理的基础,确保每台节点的openssh-server已经安装并自动启动。sshd在一台主机上第一次启动的时候会生成一对密钥,对外界的ssh登录连接此主机须提供公钥给客户端,此后网络上传送的数据全是用这个公钥加密过的密文,而这个公钥加密过的数据也只有这台主机可以解密,别的机子即使能截获到数据包也无法得到数据包的内容,所以ssh、scp要比传统的telnet、rcp、rsh等要安全得多。

1. 设定系统ssh_known_hosts

此文件在/etc/ssh下面,内容可以由ssh-keyscan生成,生成此文件的目的是对任意用户用ssh登录任意节点时不用总询问确认的问题。为了产生此文件必须先用ssh-keyscan去产生一个ssh-hosts文件(文件名任意),ssh-hosts每一行包括一台主机,先写主机的IP地址后写与这个IP地址关联的名字(包括IP地址在内),如下所示:

192.168.0.17 master,192.168.0.17
192.168.0.2 node02,192.168.0.2
192.168.0.3 node03,192.168.0.3
192.168.0.4 node04,192.168.0.4

写完这个文件后运行如下命令:

ssh-keyscan -t rsa,dsa,rsa1 -f ssh-hosts >/etc/ssh/ssh_known_hosts

2. 设定让管理员用户从主节点无须密码登录任意主机

因为管理员用户进行一些日常管理与维护,无须密码登录其余节点机还是有必要的。须要做的操作是生成一个密钥对,将私钥放在主节点机上,将公钥放在其余的节点机上。具体操作如下(以下操作对普通用户也适合):

ssh-keygen -t rsa

运行此命令后会在$HOME/.ssh目录生成两个文件,id_rsa和id_rsa.pub,分别是生成的私钥和公钥。将公钥拷贝到其余节点机的$HOME/.ssh/下并命名为authorized_keys2即可。可能其余节点机上没有.ssh目录,如果没有则先自行建一个.ssh目录。

ssh node02 mkdir .ssh
cat ~/.ssh/id_rsa.pub | ssh node02 "cat >>.ssh/authorized_keys2"
ssh node02 chmod 600 ~/.ssh/authorized_keys2

对所有的从节点(node03 node04...)均运行上述命令,便可以实现从主节点登录任意节点无须输入密码。

没有评论: