02-SSH免密登录(普通用户)

news/2025/1/11 23:47:27/

SSH免密登录

说明:

​ 假设我们在 NameNode节点部署在kk01 SecondNameNode节点部署在kk03,ResourceManager 部署在 kk02

​ kk01上的 NameNode 需要分别到kk01、kk02、kk03上启动DataNode,因此需要配置ssh免密到其他机器

​ kk02上的 ResourceManager 需要分别到kk01、kk02、kk03上启动NodeManager,因此需要配置ssh免密到其他机器

​ kk03上的SecondNameNode是通过网络通信开启的,因此kk03不需要配置ssh免密到其他机器

​ 所以,我们这里面只配置了kk01、kk02 到其他主机的无密登录;因为kk01配置的是NameNode,kk02配置的是ResourceManager,都要求对其他节点无密访问。

1)kk01上生成公钥和私钥

注意:

​ 如果我们使用的是普通用户 nhk,则除了配置 普通用户 nhk kk01 kk02 到 集群其他节点的免密还需要配置 root 用户 kk01 到集群其他节点的免密

[nhk@kk01 ~]$ pwd
/home/nhk
[nhk@kk01 ~]$ ssh-keygen -t rsa     # 输入这个命令以后,连按3下回车
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nhk/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/nhk/.ssh/id_rsa.
Your public key has been saved in /home/nhk/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IyZWRTpgC/Tw3sRDas2z8C5ohz9+bn3zbcYsjpiXVk0 nhk@kk01
The key's randomart image is:
+---[RSA 2048]----+
| .+ o ..o        |
|   * O o         |
|    B @          |
|   o * =      E  |
|    + * S    o   |
|   + + . .  . .  |
|  + o ..   o o   |
| . o..o .o*...=  |
|   .o=. o+.+o+.  |
+----[SHA256]-----+
[nhk@kk01 ~]$ ls -la
....
drwxr-xr-x.  2 nhk  nhk     6 Jun 16 15:29 Public
drwx------.  2 nhk  nhk    57 Jun 16 16:47 .ssh
[nhk@kk01 ~]$ cd .ssh/
[nhk@kk01 .ssh]$ ll
total 12
-rw-------. 1 nhk nhk 1679 Jun 16 16:47 id_rsa		# 生成的私钥
-rw-r--r--. 1 nhk nhk  390 Jun 16 16:47 id_rsa.pub	# 生成的公钥
-rw-r--r--. 1 nhk nhk  182 Jun 16 16:13 known_hosts

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

2)将kk01公钥拷贝到要免密登录的目标机器上

现在,我们需要将kk01机器上 /home/nhk/.ssh 目录下的 id_rsa.pub 公钥分发到kk01、kk02、kk03,只有这样,kk01才能免密登录到 kk01、kk02、kk03

[nhk@kk01 .ssh]$ ssh-copy-id kk01
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/nhk/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
nhk@kk01's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'kk01'"
and check to make sure that only the key(s) you wanted were added.[nhk@kk01 .ssh]$ ll
total 16
-rw-------. 1 nhk nhk  390 Jun 16 16:51 authorized_keys # 存放授权过的无密登录服务器公钥
-rw-------. 1 nhk nhk 1679 Jun 16 16:47 id_rsa
-rw-r--r--. 1 nhk nhk  390 Jun 16 16:47 id_rsa.pub
-rw-r--r--. 1 nhk nhk  364 Jun 16 16:51 known_hosts#记录ssh访问过计算机的公钥(public key) [nhk@kk01 .ssh]$ ssh-copy-id kk02[nhk@kk01 .ssh]$ ssh-copy-id kk03

​ 其中,authorized_keys是一个文件,用于存储该用户允许登录的公钥。当用户使用SSH协议登录到远程主机时,系统会检查该用户的authorized_keys文件,如果该用户的公钥在该文件中,则允许该用户登录。

​ authorized_keys文件的格式为每行一个公钥,可以通过将本地公钥添加到远程主机的authorized_keys文件中,实现无密码登录远程主机的功能。这种方式可以提高系统的安全性,因为只有拥有私钥的用户才能登录到远程主机,而且不需要输入密码,避免了密码泄露的风险。

[nhk@kk01 .ssh]$ cat authorized_keys 	
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvjE4ZqmxANCAde45dySr/j3UnqUsJtusprflas1YsHD3OngNcklRtnfWQQDoD0dQucfLy5TMDNl4GmsCbiWMTtVTuBo8kv5PxNRr5JMC7ePifpfSHTdISa
pwYKGPsby6rphEv5G/r1QNiFGn7JRGW5yaQW8A0xTR/pMUs9UJJ/8uwrE5syWmpFFqTQoFT/iIfkk8NhQ9sKXmsv4uYxDou7Dt2B7WXqPmJCY2A6JtBFocUJzu3oqhdRbaAplXuM1meCTRUK/skzr3hsf5HBOu7LooeIR/Z6N/O3gls8QRDEcWqs22gIikxZR8WQHY4no2A78h9JeFxjBjCP7gj4Jl/ nhk@kk01  # 表示kk01上的nhk用户可以拿着密钥对当前机器进行免密登录

3)kk02上生成公钥和私钥

[nhk@kk02 .ssh]$ pwd
/home/nhk/.ssh
[nhk@kk02 .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nhk/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/nhk/.ssh/id_rsa.
Your public key has been saved in /home/nhk/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:crY+RiZ9sqIBnB6gE6m7pUtyuQo71FJC1mVJnA3h4nk nhk@kk02
The key's randomart image is:
+---[RSA 2048]----+
|  . +**          |
| + .o+ .         |
|*  . .           |
|o=.oo            |
|+ Oo E..S        |
| * =. .+=..      |
|=.* .  +.+       |
|=* . ...+        |
|*+. .. o..       |
+----[SHA256]-----+

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

4)将kk01公钥拷贝到要免密登录的目标机器上

[nhk@kk02 .ssh]$ ssh-copy-id kk01[nhk@kk02 .ssh]$ ssh-copy-id kk02[nhk@kk02 .ssh]$ ssh-copy-id kk03

5)配置root 用户 kk01 到集群其他节点的免密

我们使用普通用户nhk搭建Hadoop集群了,并且已经配置了普通用户nhk的免密登录,为什么还需要配置root用户的免密登录呢?

因为我们后续可能会需要用到采用root用户进行ssh,比如:

我们使用 xsync自定义分发脚本时,有时我们需要分发root用户所属的目录,比如 /etc/profile.d/my_env.sh ,此时我们就需要用到 sudo命令,用于以超级用户(root)的身份执行命令,此时会将权限切换到了root目录下,以root用户分发文件,因此root用户也需要免密到 kk02、kk03

[nhk@kk01 software]$ su root
Password: 
[root@kk01 software]# whoami
root
[root@kk01 software]# cd 
[root@kk01 ~]# pwd
/root
[root@kk01 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:oyaCNry6CqIUaXg1Bp1IEtAuWuTPa7YKgQtMZaf0Qq0 root@kk01
The key's randomart image is:
+---[RSA 2048]----+
|=+oB.o           |
| .O.*.           |
| = o=.           |
|* =E..           |
|*B.o    S        |
|==. o  . .       |
|*=. ..o          |
|*.o.+o           |
|Bo.+..           |
+----[SHA256]-----+
[root@kk01 ~]# ssh-copy-id kk01[root@kk01 ~]# ssh-copy-id kk02[root@kk01 ~]# ssh-copy-id kk03

此致,基于普通用户搭建Hadoop的SSH免密配置完成


http://www.ppmy.cn/news/1028187.html

相关文章

五、Netty高性能架构设计

目录 5.1 线程模型基本介绍5.2 传统阻塞I/O服务模型5.2.1 工作原理5.2.2 阻塞IO模型特点5.2.3 阻塞IO存在的问题 5.3 Reactor模式5.3.1 针对传统阻塞IO服务模型的2个缺点,解决方案5.3.2 IO复用 线程池,就是Reactor模式设计的基本思想 5.1 线程模型基本介…

Word(1):文章页码设置

1.需求 在文档的封皮页不设置页码,在目录页页码设置为罗马数字,在正文使用阿拉伯数字。 2.解决方法 step1: 在封皮页的最后,点击”插入“-分隔符-分节符(下一页) step2:在目录页的最后&…

flutter开发实战-WidgetsBinding监听页面前台后台退出状态

flutter开发实战-WidgetsBinding监听页面前台后台退出状态 在开发过程中,经常监听页面前台后台退出状态,这里用到了WidgetsBinding 一、WidgetsBinding是什么? WidgetsBinding是Flutter中最重要的Binding之一,它提供了与Widget…

重复delete 对象指针后的 异常调用栈怪异 解析

Release版VC6 MFC程序 程序正常退出时得到一个如下异常调用栈:​ 0:000> kb# ChildEBP RetAddr Args to Child WARNING: Frame IP not in any known module. Following frames may be wrong. 00 0019eb94 76124f2f 00c3afc8 0019ebdc 001…

基于centos7.9通过nginx实现负载均衡以及反向代理

摘要:负载均衡: 负载均衡是一种技术,用于在多个服务器之间分发传入的网络流量,以平衡服务器的负载,提高系统的可用性和性能。当您有多台服务器时,您可以使用负载均衡将请求分发到这些服务器上,从…

Linux-C++开发项目:基于主从Reactor模式的高性能并发服务器

目录 1.项目介绍2.1项目部署2.2安装版本较高的编译器 2.项目开发过程2.1网络库模块开发2.1.1简单日志宏的实现2.1.2Buffer模块实现2.1.3Socket模块实现2.1.4Channel模块实现2.1.5Poller模块实现2.1.6TimerWheel模块实现2.1.7EventLoop模块实现2.1.8整合测试12.1.9LoopThread模块…

Nacos AP架构集群搭建(Windows)

手写SpringCloud项目地址,求个star github:https://github.com/huangjianguo2000/spring-cloud-lightweight gitee:https://gitee.com/huangjianguo2000/spring-cloud-lightweigh 目录: 一:初始化MySQL 二:复制粘贴三份Nacos文…

【实战讲解】数据血缘落地实施

‍在复杂的社会分工协作体系中,我们需要明确个人定位,才能更好的发挥价值,数据也是一样,于是,数据血缘应运而生。 今天这篇文章会全方位的讲解数据血缘,并且给出具体的落地实施方案。 一、数据血缘是什么…