任务描述
知识点:
- 掌握配置SSH免密连接
重 点:
- 掌握SSH免密连接
- 熟练使用Linux命令配置机器间的免密登陆
内 容:
- 配置SSH免密登陆
- 使用命令分发文件
- 测试SSH免密登陆
任务指导
Hadoop分布式集群是由多个节点组成,各节点之间需要通过网络访问,如果每次都需要输入密码,非常不方便,所以可以考虑设置各节点之间免密码连接。任务的内容为在各个节点配置SSH,首先在所有集群服务器节点上生成密钥对,然后再将公钥合并到一个公钥文件中,最后将该文件分发到所有节点,这样就可以实现各节点之间的免密码连通了。
通过以下步骤完成集群SSH名密码连接的配置:
- 在所有集群服务器中启动SSH免密登陆
- 在所有集群服务器中使用命令生成密钥对
- 在master中合并所有集群服务器中的公钥到authorized_keys文件
- 将master服务器上authorized_keys、known_hosts复制到其他集群服务器中
- 测试ssh连接其他节点
任务实现
Hadoop分布式集群是由多个节点组成,各节点之间需要通过网络访问,如果每次都需要输入密码,非常不方便,所以可以考虑设置各节点之间免密码连接。任务的内容为在各个节点配置SSH,首先在所有集群服务器节点上生成密钥对,然后再将公钥合并到一个公钥文件中,最后将该文件分发到所有节点,这样就可以实现各节点之间的免密码连通了。
注意:当前环境初始化已完成,可跳过此步骤。如果出现无法免密码连接的情况,可尝试以下步骤。
1. 在所有集群服务器中启动SSH免密登陆
- 如果你的Linux没有安装SSH,请首先安装SSH,如果已经安装,则请忽略此步骤。(当前CentOS系统均已经安装SSH)
Ubuntu下安装SSH:
# sudo apt-get install openssh-server;
CentOS下安装SSH:
# yum install openssh-server。
- 如果CentOS默认没有启动SSH无密登录,则需要确定/etc/ssh/sshd_config中有以下3行的内容(如果没有请手动添加),每台服务器都要设置,修改的内容如下:
2. 在所有集群服务器中使用命令生成密钥对
- SSH免密码登录,因为Hadoop需要通过SSH登录到各个节点进行操作,我用的是root用户,每台服务器都生成公钥,再合并到authorized_keys。
- 输入命令【ssh-keygen -t rsa】生成key,一直回车,都不输入密码,/root就会生成.ssh文件夹,每台服务器都要设置。例如,在master节点上执行如下操作命令:
[ root@master / ]# ssh-keygen -t rsa
- 然后进行slave1节点,执行如下操作命令:
[ root@slave1/ ]# ssh-keygen -t rsa
- 然后进行slave2节点,执行如下操作命令:
[ root@slave2/ ]# ssh-keygen -t rsa
注意,要准确的切换到不同的节点(机器)。
3. 在master中合并所有集群服务器中的公钥到authorized_keys文件
- 合并公钥到authorized_keys文件,在master服务器,进入/root/.ssh目录
[ root@master / ]# cd /root/.ssh/
- 使用SSH命令合并,如下所示:
[ root@master .ssh ]# cat id_rsa.pub >> authorized_keys
[ root@master .ssh ]# ssh root@slave1 cat ~/.ssh/id_rsa.pub >> authorized_keys
[ root@master .ssh ]# ssh root@slave2 cat ~/.ssh/id_rsa.pub >> authorized_keys
4. 将master服务器上authorized_keys、known_hosts复制到其他集群服务器中
- 如果使用SSH命令连接其它节点,则需要公钥文件authorized_keys,分发到所有节点,这样就可以实现各节点之间的免密码连通了。
- 将master服务器上/root/.ssh/目录下的authorized_keys、known_hosts复制到slave服务器的/root/.ssh目录中,使用【scp -rq /root/.ssh/authorized_keys /slave1:/root/.ssh/】命令,具体如下;
[ root@master / ]# scp -rq /root/.ssh/authorized_keys /slave1:/root/.ssh/
[ root@master / ]# scp -rq /root/.ssh/authorized_keys /slave2:/root/.ssh/
[ root@master / ]# scp -rq /root/.ssh/known_hosts /slave1:/root/.ssh/
[ root@master / ]# scp -rq /root/.ssh/known_hosts /slave2:/root/.ssh/
5. 测试ssh连接其他节点
- 使用【# ssh 节点主机名或IP地址】命令测试免密连接,例如:
[ root@master / ]# ssh slave1
- 在第一次请求连接时需要输入一次密码,以后就不需要再输入密码了。使用【exit】命令退出SSH连接。
[ root@slave1/ ]# exit