ssh是比较可靠的应用层远程会话协议,也是通过客户端管理大量服务器的主流协议,默认情况下通过ssh登录服务器需要输入用户名和密码进行连接,但是集群的服务器之间一般都会配置免密码登录,这样对于运维和软件运行都非常方便,比如hadoop集群,如果没有ssh互信,那么每次启动时可能都要输入密码用来访问每台机器的DataNode,所以对于这种大数据集群来说都会配置ssh免密码登录,以下就具体的配置方法

首先应该安装ssh服务,一般CentOS和fedora等发行版系统默认安装好了ssh服务,如果没有安装那么可以使用yum install openssh-server如果是Ubuntu可以使用apt-get install openssh-server安装

安装好了一般我们用户目录下一般会有一个.ssh目录,如果没有也可以重新建立,比如/home/user下面,接下来就是配置user用户的免登陆,当然root用户也是可以的,首先执行命令生成公钥和私钥:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

现在这样就生成了密钥,包括私钥和公钥,可以通过cat ~/.ssh/id_dsa.pub查看公钥的内容

注意:从openssh 7.0开始默认就关闭了ssh-dss认证方式,也就是dsa的密钥认证,原因是dsa有其对应的弱点,比如在centos8中上面方式生成的密钥在ssh会被禁用,通过ssh -v可以看出,这个时候就算配置免密之后仍然需要输入密码,虽然可以通过在/etc/ssh/ssh_config中配置PubkeyAcceptedKeyTypes=+ssh-dss,但是仍然不建议这么做,建议采用推荐的认证方式:rsa(默认),ecdsa,ed25519这些,所以统一按照下面的命令生成密钥:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

下面所有的操作全部更新为在rsa类型的密钥上进行操作

然后我们把公钥追加到用来认证授权的key中去,可以执行:

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

这样就实现了本机的免密码登录,现在可以通过执行ssh localhost确认来登录本地服务器了,第一次登录会询问是否继续输入yes回车即可,这个authorized_keys认证文件在/etc/ssh/sshd_config中的AuthorizedKeysFile进行配置,默认即可.

如果提示服务没有启动,可以通过执行

service sshd start

  如果是CentOS7以上的版本或者新版的Fedora可以使用下面命令来启动

systemctl start sshd.service

可以用service sshd status查看ssh服务的运行状态

对于集群间免密的设置也很简单,只要知道原理就好做了,分别在每台机器上按照上面配置本地免密登录,然后将其余每台机器生成的~/.ssh/id_rsa.pub公钥内容追加到其中一台主机的authorized_keys中,然后将这台机器中包括每台机器公钥的authorized_keys文件发送到集群中所有的服务器;这样集群中每台服务器都拥有所有服务器的公钥,这样集群间任意两台机器都可以实现免密登录了

此时也可以在其他计算机通过ssh shell工具远程连接到集群进行各种操作

另外注意,如果使用ssh远程访问本地虚拟机,那么虚拟机网络设置直接设置成NAT即可,使用ifconfig查看ip地址进行连接

如果虚拟机安装在同一局域网中的其他计算机中,那么最简单的一种方法是设置虚拟机的网络为桥接,就相当于局域网中的一台独立的计算机一样,独自分配一个子网地址,然后我们就可以通过子网使用ssh客户端连接了

上面复制的方法比较麻烦而且容易出错,下面是一种通用的配置方式,假设现在集群是3台服务器hadoop1,hadoop2,hadoop3

首先保证主机名、hosts、防火墙正确设置

1、配置每个节点本身公钥和免密(其实第二行只在hadoop1上执行即可,其余节点最后会发送,没必要执行)

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

现在每台节点本身实现免密

2、将除hadoop1之外所有节点的公钥复制到hadoop1,这里是将hadoop2,hadoop3的公钥拷贝到hadoop1的authorized_keys,目的是实现hadoop2,hadoop3登录hadoop1实现免密,而反过来不行

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop1 # 在hadoop2上执行
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop1 # 在hadoop3上执行

3、实现最终集群所有节点互相免密

现在hadoop1保存了所有节点的公钥,那么这个时候应该发送hadoop1上的authorized_keys到其他节点

scp ~/.ssh/authorized_keys hadoop2:~/.ssh/
scp ~/.ssh/authorized_keys hadoop3:~/.ssh/

至此集群3台主机任意节点之间免密完成

免密的核心思想就是:如果A服务器authorized_keys有B服务器的公钥,那么B服务器可以免密登录A服务器...

集群ssh服务和免密码登录的配置的更多相关文章

  1. 使用ssh公钥实现免密码登录

    使用ssh公钥实现免密码登录 ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(10.207.160.34),B(10 ...

  2. Linux使用ssh公钥实现免密码登录Linux

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例.有机器A(192.168.1.155),B(192.168.1.181).现想A ...

  3. Ubuntu使用ssh公钥实现免密码登录

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以Ubuntu为例. 有机器A(10.0.2.1),B(10.0.2.100).现想A通过ssh免密 ...

  4. ssh免密码登录快速配置方法

    环境需求: 两台Linux主机   A (192.168.3.101)和 B(192.168.3.102),如何使用主机 A 免密码登录 主机B ? 配置步骤: 首页登录主机 A ,在主机A上生成自己 ...

  5. Linux ssh下实现免密码登录

    1.Linux 生成密钥 ssh-keygen -t rsa 进入“.ssh”会生成以下几个文件 id_rsa : 生成的私钥文件 id_rsa.pub : 生成的公钥文件 know_hosts : ...

  6. SSH使用密钥免密码登录

    使用ssh远程连接服务器,有两种身份校验方式:账号密码和秘钥.使用秘钥的方式理论上更加安全,而且免去了输入密码的步骤,使用起来更方便(尤其对于sftp,scp等). 设置 SSH,打开密钥登录功能 编 ...

  7. PuTTY SSH 使用证书免密码登录

    1.用PuTTY SSH 密钥生成工具puttygen.exe生成密钥.生成的密钥类型和位数按照默认的就OK,SSH-2 RSA,1024位生成密钥时你需要在空白区域移动鼠标,以便产生随机数据点击保存 ...

  8. 糗事之 -- 用ssh公钥实现免密码登录

    前言:工作原因,每天都会登录好多次服务器,每次都是ssh root@192.168..... 然后输入密码,来来回回输几次真是很烦啊. 问题:怎么可以在每次ssh连接服务器时不用输入密码,直接登录? ...

  9. linux ssh 免密码登录的配置过程

    # ssh-keygen -t rsa -C "自定义描述" -f ~/.ssh/自定义生成的rsa文件 # cd ./.ssh # touch config # 粘贴  Host ...

随机推荐

  1. HashMap和Hashtable及HashSet的区别

    相关文章1:HashSet,TreeSet和LinkedHashSet的区别 相关文章2:HashSet和TreeSet的区别 Hashtable类     Hashtable继承Map接口,实现一个 ...

  2. 【bzoj1013】 JSOI2008—球形空间产生器sphere

    www.lydsy.com/JudgeOnline/problem.php?id=1013 (题目链接) 题意 有一个n维的球体,给出球上n+1个点,求出圆心. Solution 题中给出了对于n维空 ...

  3. Vijos1056 图形面积

    描述 桌面上放了N个平行于坐标轴的矩形,这N个矩形可能有互相覆盖的部分,求它们组成的图形的面积. 格式 输入格式 输入第一行为一个数N(1≤N≤100),表示矩形的数量.下面N行,每行四个整数,分别表 ...

  4. UVA294DIvisors(唯一分解定理+约数个数)

    题目链接 题意:输入两个整数L,U(L <= U <= 1000000000, u - l <= 10000),统计区间[L,U]的整数中哪一个的正约数最多,多个输出最小的那个 本来 ...

  5. GNUPLOT画图工具

    http://blog.csdn.net/codingkid/article/details/7211492 不得不说这个工具实在是太强大了. 1.首先命令简单,不会有那么多的语法问题. 2.其次画图 ...

  6. js中初学函数的使用

    <script> function SetColor(name,value) { var oDiv=document.getElementById('div3'); oDiv.style[ ...

  7. Unity3d三大光照渲染介绍

      重要:在目前市面上常见的游戏引擎中,主要采用以下三种灯光实现方式: 顶点照明渲染路径细节 Vertex Lit Rendering Path Details 正向渲染路径细节 Forward Re ...

  8. strstr 函数用法

    strstr 编辑 strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地址:否则,返回NULL. C语言函数 编辑 ...

  9. Quartz.net开源作业调度框架使用详解(转)

    前言 quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本.支持 cron-like表达式,集群,数据库.功能性能强大更不 ...

  10. Dialog类介绍

    Dialog类实现为一个简单的漂浮窗口,完全在Activity中创建.使用基本的Dialog类,你可以创建一个新的实例并设定标题和布局,如下所示: Dialog d = new Dialog(MyAc ...