当前位置: 首页 > 编程日记 > 正文

SSH无需密码密钥登录

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

无密码ssh登录的主要操作简单概述为,将本机中的ssh密钥对中的公钥如id_rsa.pub拷贝到目标机器的ssh验证文件authorized_keys中。


1、简洁操作步骤

摘录一 :使用ssh-copy-id
在192.168.42.142机器上

1)运行:ssh-keygen -t rsa

2)然后拍两下回车(均选择默认)

3)运行: 
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.42.163
或普通用户:
ssh-copy-id NAME@IP

4)再输入163机器上的root密码

此时,再ssh 到163机器,则不需要密码了。相互之间scp,也不需要密码


摘录二:手动拷贝

配置 ssh 实现 MPI 节点间用户的无密码访问,由于 MPI 并行程序需要在各节点间进行信息传递,所以必须实现所有节点两两之间能无密码访问。
节点间的无密码访问是通过配置ssh 公钥认证来实现的。例如,对新用户 user 配置 ssh 公钥认证,先在 c1 上做以下操作。
(1)生成了私钥 id_dsa 和公钥 id_dsa.pub,具体操作方法如下。
ssh-keygen -t rsa
   系统显示一些信息,遇到系统询问直接回车即可。
(2)将该密钥用作认证,进行访问授权。按如下命令在 c1 执行。
cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
   由于我们使用的是 root 用户,所以~代表/root,
(3)将~/.ssh 目录下的文件复制到所有节点。
scp -r ~/.ssh/* c2:/root/.ssh
(4)检查是否可以直接(不需要密码)登录其他节点。
ssh c2
   如能两两之间不需要密码登录其他节点,则表明配置成功。

2、详细介绍:SSH无密码验证配置

Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。

2.1 安装和启动SSH协议

在"Hadoop集群(第1期)"安装CentOS6.0时,我们选择了一些基本安装包,所以我们需要两个服务:ssh和rsync已经安装了。可以通过下面命令查看结果显示如下:

rpm –qa | grep openssh

rpm –qa | grep rsync

  假设没有安装ssh和rsync,可以通过下面命令进行安装。

yum install ssh 安装SSH协议

yum install rsync (rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)

service sshd restart 启动服务

确保所有的服务器都安装,上面命令执行完毕,各台机器之间可以通过密码验证相互登。

2.2 配置Master无密码登录所有Salve

  1)SSH无密码原理

Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。

  2)Master机器上生成密码对

在Master节点上执行以下命令:

ssh-keygen –t rsa –P ''

这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。

查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。

接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

在验证前,需要做两件事儿。第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。使其无密码登录有效。

  1)修改文件"authorized_keys"

chmod 600 ~/.ssh/authorized_keys

备注:如果不进行设置,在验证时,扔提示你输入密码,在这里花费了将近半天时间来查找原因。在网上查到了几篇不错的文章,把作为"Hadoop集群_第5期副刊_JDK和SSH无密码配置"来帮助额外学习之用。

2)设置SSH配置

root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

设置完之后记得重启SSH服务,才能使刚才设置有效。

service sshd restart

  退出root登录,使用hadoop普通用户验证是否成功。

ssh localhost

从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制所有Slave机器上。使用下面的命令格式进行复制公钥:

scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/

例如:

scp ~/.ssh/id_rsa.pub hadoop@192.168.1.3:~/

上面的命令是复制文件"id_rsa.pub"到服务器IP为"192.168.1.3"的用户为"hadoop"的"/home/hadoop/"下面。

下面就针对IP为"192.168.1.3"的Slave1.Hadoop的节点进行配置。

  1)把Master.Hadoop上的公钥复制到Slave1.Hadoop上

 

从上图中我们得知,已经把文件"id_rsa.pub"传过去了,因为并没有建立起无密码连接,所以在连接时,仍然要提示输入输入Slave1.Hadoop服务器用户hadoop的密码。为了确保确实已经把文件传过去了,用SecureCRT登录Slave1.Hadoop:192.168.1.3服务器,查看"/home/hadoop/"下是否存在这个文件。

从上面得知我们已经成功把公钥复制过去了。

  2)在"/home/hadoop/"下创建".ssh"文件夹

这一步并不是必须的,如果在Slave1.Hadoop的"/home/hadoop"已经存在就不需要创建了,因为我们之前并没有对Slave机器做过无密码登录配置,所以该文件是不存在的。用下面命令进行创建。(备注:用hadoop登录系统,如果不涉及系统文件修改,一般情况下都是用我们之前建立的普通用户hadoop进行执行命令。)

mkdir ~/.ssh

然后是修改文件夹".ssh"的用户权限,把他的权限修改为"700",用下面命令执行:

chmod 700 ~/.ssh

  备注:如果不进行,即使你按照前面的操作设置了"authorized_keys"权限,并配置了"/etc/ssh/sshd_config",还重启了sshd服务,在Master能用"ssh localhost"进行无密码登录,但是对Slave1.Hadoop进行登录仍然需要输入密码,就是因为".ssh"文件夹的权限设置不对。这个文件夹".ssh"在配置SSH无密码登录时系统自动生成时,权限自动为"700",如果是自己手动创建,它的组权限和其他权限都有,这样就会导致RSA无密码远程登录失败。

对比上面两张图,发现文件夹".ssh"权限已经变了。

  3)追加到授权文件"authorized_keys"

到目前为止Master.Hadoop的公钥也有了,文件夹".ssh"也有了,且权限也修改了。这一步就是把Master.Hadoop的公钥追加到Slave1.Hadoop的授权文件"authorized_keys"中去。使用下面命令进行追加并修改"authorized_keys"文件权限:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

  4)用root用户修改"/etc/ssh/sshd_config"

  具体步骤参考前面Master.Hadoop的"设置SSH配置",具体分为两步:第1是修改配置文件;第2是重启SSH服务。

  5)用Master.Hadoop使用SSH无密码登录Slave1.Hadoop

当前面的步骤设置完毕,就可以使用下面命令格式进行SSH无密码登录了。

ssh 远程服务器IP

从上图我们主要3个地方,第1个就是SSH无密码登录命令,第2、3个就是登录前后"@"后面的机器名变了,由"Master"变为了"Slave1",这就说明我们已经成功实现了SSH无密码登录了。

最后记得把"/home/hadoop/"目录下的"id_rsa.pub"文件删除掉。

rm –r ~/id_rsa.pub

到此为止,我们经过前5步已经实现了从"Master.Hadoop"到"Slave1.Hadoop"SSH无密码登录,下面就是重复上面的步骤把剩余的两台(Slave2.Hadoop和Slave3.Hadoop)Slave服务器进行配置。这样,我们就完成了"配置Master无密码登录所有的Slave服务器"。

2.3 配置所有Slave无密码登录Master

和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)

为了说明情况,我们现在就以"Slave1.Hadoop"无密码登录"Master.Hadoop"为例,进行一遍操作,也算是巩固一下前面所学知识,剩余的"Slave2.Hadoop"和"Slave3.Hadoop"就按照这个示例进行就可以了。

首先创建"Slave1.Hadoop"自己的公钥和私钥,并把自己的公钥追加到"authorized_keys"文件中。用到的命令如下:

ssh-keygen –t rsa –P ''

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

接着是用命令"scp"复制"Slave1.Hadoop"的公钥"id_rsa.pub"到"Master.Hadoop"的"/home/hadoop/"目录下,并追加到"Master.Hadoop"的"authorized_keys"中。

  1)在"Slave1.Hadoop"服务器的操作

用到的命令如下:

scp ~/.ssh/id_rsa.pub     hadoop@192.168.1.2:~/

  

  2)在"Master.Hadoop"服务器的操作

用到的命令如下:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

然后删除掉刚才复制过来的"id_rsa.pub"文件。

最后是测试从"Slave1.Hadoop"到"Master.Hadoop"无密码登录。

从上面结果中可以看到已经成功实现了,再试下从"Master.Hadoop"到"Slave1.Hadoop"无密码登录。

至此"Master.Hadoop"与"Slave1.Hadoop"之间可以互相无密码登录了,剩下的就是按照上面的步骤把剩余的"Slave2.Hadoop"和"Slave3.Hadoop"与"Master.Hadoop"之间建立起无密码登录。这样,Master能无密码验证登录每个Slave,每个Slave也能无密码验证登录到Master。



转载于:https://my.oschina.net/emptytimespace/blog/79173

相关文章:

5-4 图片修补

import cv2 import numpy as np img cv2.imread(image0.jpg,1) for i in range(200,300): # 直接修改像素值 从200画到300这样一个位置上img[i,200] (255,255,255)#当前这样一根线占三个像素img[i,2001] (255,255,255)img[i,200-1] (255,255,255) for i in range(150,250):…

OpenCV 像素存储

像素存储 OpenCV 中图像矩阵的大小取决于所用的颜色模型,更准确的说是取决于图像所用到的通道数。 如果使用的是灰度图,矩阵大概如图所示: 如果使用的是多通道的图像,矩阵中的列会包含多个子列,子列的个数和通道数相…

java反射用在哪里_Java反射

昨天去参加比赛了,所以没有进行博客迁移。人生中的第一场健体比赛,虽然没得奖,但是收获和带来的思考颇丰。意外地进入了男子B组(174以上)的半决赛,然后在半决赛的时候还被裁判员点名出去单独比较,这个很让我惊喜。最后…

html中锚点的应用【本页面跳转】

设置锚点 <a name"top"></a> 同页跳转 <a href"#top">返回顶部</a> 不同页跳转 <a href"test.htm#top>跳转到test.htm页面顶部</a> 转载于:https://www.cnblogs.com/wangmars/p/3241855.html

SQL2005CLR函数扩展-正则表达式

用过Oracle的人都知道Oracle有四个正则表达函数REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和EGEXP_REPLACE&#xff0c;而SQLServer却无法完全实现上面的功能。以前我们知道用sp_OAxxx系列函数来调用js组建实现正则&#xff0c;现在我们可以通过CLR扩展来借助.Net实现。 ※ 代…

ROW_NUMBER() OVER函数的基本用法

简单的说row_number()从1开始&#xff0c;为每一条分组记录返回一个数字&#xff0c;这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序&#xff0c;再为降序以后的没条xlh记录返回一个序号。 2row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1…

OpenC 仿射变换

仿射变换&#xff08;Affine Transformation&#xff09;又称仿射映射&#xff0c;是指在几何中&#xff0c;一个向量空间进行一次线性变化并加上一个平移&#xff0c;变换位另一个的向量空间的过程。 一个任意的仿射变换都能够表示为乘以一个矩阵&#xff08;线性变换&#xf…

做acm 需要学的算法

做acm 需要学的算法 转一个搞ACM需要的掌握的算法. 要注意,ACM的竞赛性强,因此自己应该和自己的实际应用联系起来. 适合自己的才是好的,有的人不适合搞算法,喜欢系统架构,因此不要看到别人什么就眼红, 发挥自己的长处,这才是重要的. 第一阶段&#xff1a;练经典常用算法&am…

java实现七日股票问题_七日打卡--JAVA资源限制

资源限制资源限制是指在进行并发编程时&#xff0c;程序的执行速度受限于计算机硬件资源或软件资源。 例如服务器的带宽只有2Mb/s&#xff0c;某个资源的下载速度是1Mb/s每秒&#xff0c;系统启动10个线程下载资源&#xff0c;下载速度不会变成10Mb/s&#xff0c;所以在进行并发…

Cassandra 可视化工具

2019独角兽企业重金招聘Python工程师标准>>> 最近开始接触Cassandra&#xff0c;这些天在cassandra的wiki发现了一些可视化工具的推荐。现在也把这个链接推荐给大家&#xff1a;http://wiki.apache.org/cassandra/Administration%20Tools 。 几番折腾之后&#xff0…

Linux软件的安装,更新与卸载

linux软件的安装&#xff0c;更新与卸载 Linux常见的安装为tar&#xff0c;zip&#xff0c;gz&#xff0c;rpm&#xff0c;deb&#xff0c;bin等。我们可以简单的分为三类. 第一&#xff1a;打包或压缩文件tar&#xff0c;zip&#xff0c;gz等&#xff0c;一般解压后即可&#…

因链接静态库先后顺序不正确,引起符号定义找不到

问题 项目中需要链接多个静态库&#xff0c;在编译的时候报错如下 sdi_io.cpp:(.text._ZN13sdi_H264EncIO7DataPopEPm0x30)&#xff1a;对‘H264ENC_StatusGet(H264ENC_Status_t&)’未定义的引用可能原因是符号确实没有定义&#xff0c;而本文出现这个问题的原因是&#…

java中后台是那一部分_一套Java后台管理系统,拿来即用(附项目地址)

前言这套Base Admin是一套简单通用的后台管理系统&#xff0c;主要功能有&#xff1a;权限管理、菜单管理、用户管理&#xff0c;系统设置、实时日志&#xff0c;实时监控&#xff0c;API加密&#xff0c;以及登录用户修改密码、配置个性菜单等技术栈前端&#xff1a;layuijava…

基础 HTML之目录问题(相对路径和绝对路径区别)

一、相对路径和绝对路径 相对路径&#xff1a;以引用文件之网页所在位置为参考基础&#xff0c;而建立出的目录路径。因此&#xff0c;当保存于不同目录的网页引用同一个文件时&#xff0c;所使用的路径将不相同&#xff0c;故称之为相对。 绝对路径&#xff1a;以Web站点根目录…

[转]android selector 背景选择器

关于listview和button都要改变android原来控件的背景&#xff0c;在网上查找了一些资料不是很全&#xff0c;所以现在总结一下android的selector的用法。首先android的selector是在drawable/xxx.xml中配置的。先看一下listview中的状态&#xff1a;把下面的XML文件保存成你自己…

牛客国庆集训派对Day6 B.Board

链接 [https://www.nowcoder.com/acm/contest/206/B] 分析 只要在n*n范围内随便找一个斜对角的一个格子去计算就知道了 具体看代码体会吧 代码 #include<bits/stdc.h> using namespace std; int a[1010][1010];int main(){int n,i,j,x,y;//freopen("in.txt",&q…

java并发读取相同的文件_高效读取大文件,再也不用担心 OOM 了!

最近阿粉接到一个需求&#xff0c;需要从文件读取数据&#xff0c;然后经过业务处理之后存储到数据库中。这个需求&#xff0c;说实话不是很难&#xff0c;阿粉很快完成了第一个版本。内存读取第一个版本&#xff0c;阿粉采用内存读取的方式&#xff0c;所有的数据首先读读取到…

Cmake 实例学习 一

一. 第一个简单的例子 在一个目录下面实现一个简单的 hello world 程序 使用cmake进行构建的时候&#xff0c;每个目录下面都要有一个 CMakeLists.txt 的文件 如果是一个稍微大的工程&#xff0c;有多级目录&#xff0c;在上级目录中的 CMakeLists.txt 中会有定义要求编译子目…

ORA-19502: write error on file xxxxx, block number xxxx

错误现象&#xff1a; 在ORACLE 10g下为表空间IGNITE_EGVSQL01增加数据文件时&#xff0c;报如下错误&#xff1a; SQL> ALTER TABLESPACE IGNITE_EGVSQL01 ADD DATAFILE /oradata/ignt/ignite_egvsql01_d02.dbf SIZE 4096M AUTOEXTEND OFF; ERROR at line 1: O…

关于Jfinal的分享代码托管GitHub

为什么80%的码农都做不了架构师&#xff1f;>>> Blog中所有的代码已经托管到github. https://github.com/b1412 此blog中关于Jfinal的代码分享不再维护。有兴趣的朋友可以关注我的github。 大家都贡献和分享一点&#xff0c;让jfinal发展的更好~ 转载于:https:…

软件发布版本的业界规则?

文章&#xff1a;8天学通MongoDB——第一天 基础入门 今天看到一篇文章说&#xff1a;业界规则&#xff0c;偶数为“稳定版”&#xff08;如&#xff1a;1.6.X&#xff0c;1.8.X&#xff09;&#xff0c;奇数为“开发版”&#xff08;如&#xff1a;1.7.X&#xff0c;1.9.X)&am…

CMake学习资料

CMake 官方 FAQ https://gitlab.kitware.com/cmake/community/wikis/FAQ CMake 官方文档 https://cmake.org/cmake/help/cmake2.4docs.html CMake 视频教程 https://www.youtube.com/watch?vCLvZTyji_Uw CMake 维基教科书 https://zh.wikibooks.org/w/index.php?titleCMake_入…

MySQL rpm包 二进制区别_Linux环境下安装mysql5.6(二进制包不是rpm格式)

一.准备:1.CentOS release 6.82.mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz3.Linux下MySQL5.6与MySQL5.7安装方法略有不同二.卸载原有的mysqlfind / -name mysqlrm -rf 上边查找到的路径&#xff0c;多个路径用空格隔开三.在安装包存放目录下执行命令解压文件tar -zxvf mysql-…

【心情】 轻装前行

为自己做一份总结吧&#xff0c;从毕业到现在~ 时间过得不快不慢&#xff0c;从毕业到现在挣扎着已经2年多了&#xff0c;2年多经历的了很多事情。 毕业回国不到一个礼拜&#xff0c;就跑到大连工作&#xff0c;一个造船厂&#xff0c;公司在长兴岛开发区&#xff0c;岛上几万人…

Android 马甲包制作流程

一、马甲包的制作流程 1.配置马甲包的applicationId以及应用名称 在app的build.gradle文件中添加马甲包的配置 android {signingConfigs {config {keyAlias ****keyPassword ****storeFile file(D:/qianming/****.jks)storePassword ****}}compileSdkVersion 25buildToolsVersi…

Cmake 交叉编译

转载自 http://zhixinliu.com/2016/02/01/2016-02-01-cmake-cross-compile/ CMake交叉编译 CMake的使用&#xff0c;以及如何将一个项目移植到Android。 CMake的用法 先让我们简单学习回顾一下cmake的基本知识&#xff1a; 基本流程 以linux平台为例&#xff0c;使用 CMak…

利用System.Uri转URL为绝对地址

在使用ASPOSE.Word生成Word文档时可以通过InsertHtml(html)来将图文信息写入Word文档(图片内嵌)&#xff0c;但要求html里图片的src是绝对全路径&#xff0c;所以需要对html进行转化。 获取html可以来自数据库数据或者通过网络抓取&#xff0c;得到之后使用System.Uri来进行替换…

idea上java接口自动化_Java接口自动化之IDEA创建及运行maven项目

本文2564字阅读约需7分钟第195次推送Maven作为一个项目管理工具&#xff0c;是一组标准集合&#xff0c;一个项目的生命周期、一个依赖管理系统&#xff0c;以下主要介绍IDEA创建及运行maven项目。01创建maven项目①打开IDEA&#xff0c;顶部菜单栏依次选择File-->New-->…

.NET面向上下文、AOP架构模式(实现)

.NET面向上下文、AOP架构模式&#xff08;实现&#xff09; 1.上下文Context、面向切面编程AOP模型分析 在本人的.NET面向上下文、AOP架构模式&#xff08;概述&#xff09;一文中&#xff0c;我们大概了解了上下文如何辅助对象在运行时的管理。在很多时候我们急需在运行时能把…

英语之弱元音Schwa

IELTS Speaking - 学会英语Schwa弱元音&#xff0c;你的口语也将充满英伦味 https://baijiahao.baidu.com/s?id1596905156544848616&wfrspider&forpc http://blog.sina.com.cn/s/blog_95e5f8a601017jr4.html https://www.guokr.com/blog/440820/ 打傻方进 百家号04-05…