目录
简介
SSH(Secure shell)是可以在应用程序中提供安全通信的一个协议,通过SSH可以安全地进行网络数据传输,它的主要原理是利用非对称加密体系,对所有待传输的数据进行加密,保证数据在传输时不被恶意破坏、泄露或篡改。但是大数据集群(主要指的是Hadoop集群,可用Hadoop代指)使用SSH主要不是用来进行数据传输的,而是在Hadoop集群启动或停止时,主节点需要通过SSH协议将从节点上的进程启动或停止。如果不配置SSH免密登录,对Hadoop集群的正常使用没有任何影响,只是在启动或停止Hadoop集群时,需要输入每个从节点用户名的密码。可以想象一下,当集群规模比较大时,比如达到成百上千节点规模,如果每次都要分别输入集群节点的密码,相当麻烦,这种方法肯定是不可取的,所以要对Hadoop集群进行SSH免密登录的配置,而且目前远程管理环境中最常使用的也是SSH。
SSH免密登录的功能与用户密切相关,为哪个用户配置了SSH,哪个用户就具有SSH免密登录的功能,没有配置的用户则没有该功能,这里选择为hadoop用户配置SSH免密登录。
创建Linux用户和用户组
在大数据平台搭建的过程中,为了系统安全考虑,一般不直接使用超级用户root,而是需要创建一个新的用户和用户组。在Linux系统中,可以直接使用groupadd命令创建新用户组,groupadd的使用方法如下图所示。
在控制台输入命令groupadd hadoop,就可以创建名字为hadoop的用户组。在Linux系统中,可以直接使用useradd命令创建新用户,useradd的使用方法如下图所示。
在控制台输入命令useradd -g hadoop hadoop,就可以创建名字为hadoop的用户并指定用户组为hadoop。另外,可以在root用户下,使用passwd命令为刚刚创建的hadoop用户设置密码,密码可以自行设置,具体操作如图所示。
[root@vm06 ~]# groupadd hadoop
[root@vm06 ~]# useradd -g hadoop hadoop
配置LINUX静态IP
在实际应用中,由于经常使用动态主机配置协议(Dynamic HostConfiguration Protocol, DHCP)服务器来分配IP地址,每次重启DHCP服务器,IP地址有可能是会变动的。而使用Linux系统来搭建大数据平台,希望IP地址是固定不变的,因为集群配置的很多地方都会涉及IP地址,所以需要将Linux系统配置为静态IP。那么如何进行配置呢?
这里以vm06节点为例,首先在控制台输入命令vim /etc/sysconfig/network-scripts/ifcfg-ens33 打开配置文件,然后修改vm06节点的网卡信息,具体配置如图所示。
添加DNS1=8.8.8.8
将BOOTPROTO参数由dhcp改为static,表示将动态IP改为静态IP;
添加固定IP地址IPADDR为10.0.0.106;
添加子网掩码NETMASK为255.255.255.0;
网关GATEWAY设置为10.0.0.254。(可在VMware Workstation导航栏中,选择编辑→虚拟网络编辑器选项,查看自己设置的网段和网关)
修改网卡配置之后,需要在控制台输入命令systemctl restart network重启网络服务才能生效,
编辑IP映射
实际上不论是IP地址还是主机名都是为了标识一台主机或服务器。IP地址就是一台主机上网时IP协议分配给它的一个逻辑地址,主机名就相当于又给这台机器取了一个名字,可以为主机取各种各样的名字。如果要用名字去访问主机,系统如何通过名字去识别一台主机呢?这就需要配置hostname与IP地址之间的对应关系。在控制台输入命令vi /etc/hosts打开配置文件,在hosts文件的末尾按照对应格式添加IP地址和主机名之间的对应关系。此时IP地址为10.0.0.105,对应的hostname为vm05,注意它们之间要有空格。具体配置结果如图所示
SSH免密登录配置
首先在控制台,使用su命令切换到hadoop用户,具体操作下图所示。在hadoop用户的根目录下使用mkdir命令创建.ssh目录,使用命令ssh-keygen-t rsa(ssh-keygen是秘钥生成器,-t是一个参数,rsa是一种加密算法)生成秘钥对(即公钥文件id_rsa.pub和私钥文件id_rsa),
[hadoop@vm06 ~]$ mkdir -p .ssh
[hadoop@vm06 ~]$ ll -a
total 12
drwx------ 3 hadoop hadoop 74 Nov 13 19:58 .
drwxr-xr-x. 4 root root 30 Nov 13 19:53 ..
-rw-r--r-- 1 hadoop hadoop 18 Nov 25 2021 .bash_logout
-rw-r--r-- 1 hadoop hadoop 193 Nov 25 2021 .bash_profile
-rw-r--r-- 1 hadoop hadoop 231 Nov 25 2021 .bashrc
drwxrwxr-x 2 hadoop hadoop 6 Nov 13 19:58 .ssh
将公钥文件id_rsa.pub中的内容复制到相同目录下的authorized_keys文件中,具体操作如图所示。
[hadoop@vm06 .ssh]$ ll
total 8
-rw------- 1 hadoop hadoop 1679 Nov 13 20:00 id_rsa
-rw-r--r-- 1 hadoop hadoop 393 Nov 13 20:00 id_rsa.pub
[hadoop@vm06 .ssh]$ cp id_rsa.pub authorized_keys
[hadoop@vm06 .ssh]$ ll
total 12
-rw-r--r-- 1 hadoop hadoop 393 Nov 13 20:05 authorized_keys
-rw------- 1 hadoop hadoop 1679 Nov 13 20:00 id_rsa
-rw-r--r-- 1 hadoop hadoop 393 Nov 13 20:00 id_rsa.pub
[hadoop@vm06 .ssh]$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDq0fksmfO4IKYl7gp87JdgU6SEo2l/1+pd4XCsPCzV1PEm+WXP0MWm2TEnjYbD6wBeQaoA5cXCMCt/rNT19lLAL4tZhKeBUJBKln4OrwcPlwVEihBiDC2QDYeEqtlJTGWrYpBECET3Tg3tlBkLWmDf4maYNdDjKLOEbeEl2gZ+vmyNyuO3OrIoIf0Y3ZuDqZtHZl9VQPSacPcAeRJ3KUEO56bP4mT7EgyF44GS2fzRIFnvXfrqqcYPCvS9KSinMXXSXDSa13LpducKJnJK4xQw/7+Ulj1nYiQ31lF561F7RMlLwEssy9X7X46kxMJcO9Hrqn7YVeYT0MAxOCsI1mJV hadoop@vm06
[hadoop@vm06 .ssh]$
将每个节点的 authorized_keys 密钥内容汇总到一起, 然后分发到每个节点中去
[hadoop@vm05 .ssh]$ scp authorized_keys vm06:/home/hadoop/.ssh/
The authenticity of host 'vm06 (10.0.0.106)' can't be established.
ECDSA key fingerprint is SHA256:6x51ixbdcREkjq5gPhLOrvwDUoDUWPXUFU0CqE+3E5Y.
ECDSA key fingerprint is MD5:52:99:a2:2e:c9:a1:09:4b:28:48:33:ff:c6:c2:e2:10.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'vm06,10.0.0.106' (ECDSA) to the list of known hosts.
hadoop@vm06's password:
authorized_keys 100% 1180 1.4MB/s 00:00
[hadoop@vm05 .ssh]$ scp authorized_keys vm07:/home/hadoop/.ssh/
The authenticity of host 'vm07 (10.0.0.107)' can't be established.
ECDSA key fingerprint is SHA256:6x51ixbdcREkjq5gPhLOrvwDUoDUWPXUFU0CqE+3E5Y.
ECDSA key fingerprint is MD5:52:99:a2:2e:c9:a1:09:4b:28:48:33:ff:c6:c2:e2:10.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'vm07,10.0.0.107' (ECDSA) to the list of known hosts.
hadoop@vm07's password:
authorized_keys 100% 1180 1.2MB/s 00:00
[hadoop@vm05 .ssh]$
切换到hadoop用户的根目录,然后为.ssh目录及文件赋予相应的权限,具体操作如图所示。
[hadoop@vm06 ~]$ ll -a
total 12
drwx------ 3 hadoop hadoop 74 Nov 13 20:00 .
drwxr-xr-x. 4 root root 30 Nov 13 19:53 ..
-rw-r--r-- 1 hadoop hadoop 18 Nov 25 2021 .bash_logout
-rw-r--r-- 1 hadoop hadoop 193 Nov 25 2021 .bash_profile
-rw-r--r-- 1 hadoop hadoop 231 Nov 25 2021 .bashrc
drwxrwxr-x 2 hadoop hadoop 38 Nov 13 20:00 .ssh
[hadoop@vm06 ~]$ cd .ssh/
[hadoop@vm06 .ssh]$ ll
total 8
-rw------- 1 hadoop hadoop 1679 Nov 13 20:00 id_rsa
-rw-r--r-- 1 hadoop hadoop 393 Nov 13 20:00 id_rsa.pub
[hadoop@vm06 .ssh]$ cd ..
[hadoop@vm06 ~]$ chmod 700 .ssh/
[hadoop@vm06 ~]$ chmod 600 .ssh/*
[hadoop@vm06 ~]$ ll -a
total 12
drwx------ 3 hadoop hadoop 74 Nov 13 20:00 .
drwxr-xr-x. 4 root root 30 Nov 13 19:53 ..
-rw-r--r-- 1 hadoop hadoop 18 Nov 25 2021 .bash_logout
-rw-r--r-- 1 hadoop hadoop 193 Nov 25 2021 .bash_profile
-rw-r--r-- 1 hadoop hadoop 231 Nov 25 2021 .bashrc
drwx------ 2 hadoop hadoop 61 Nov 13 20:05 .ssh
[hadoop@vm06 ~]$ cd .ssh
[hadoop@vm06 .ssh]$ ll
total 12
-rw------- 1 hadoop hadoop 393 Nov 13 20:05 authorized_keys
-rw------- 1 hadoop hadoop 1679 Nov 13 20:00 id_rsa
-rw------- 1 hadoop hadoop 393 Nov 13 20:00 id_rsa.pub
登录测试
使用ssh命令登录hadoop01,第一次登录需要输入yes进行确认,第二次以后登录则不需要,此时表明设置成功,具体操作如图所示。
[hadoop@vm05 .ssh]$ ssh vm06
Last login: Mon Nov 13 21:12:13 2023
[hadoop@vm06 ~]$ ssh vm07
Last login: Mon Nov 13 21:12:14 2023
[hadoop@vm07 ~]$