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. Hibernate-二级缓存策略

    二级缓存的策略 当多个并发的事务同时访问持久化层的缓存中的相同数据时,会引起并发问题,必须采用必要的事务隔离措施. 在进程范围或集群范围的缓存,即第二级缓存,会出现并发问题.因此可以设定以下4种类型的 ...

  2. [转]window.opener用法

    window.opener 实际上就是通过window.open打开的窗体的父窗体. 比如在父窗体parentForm里面 通过 window.open("subForm.html" ...

  3. 17.(转) Android之四大基本组件介绍与生命周期

    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...

  4. python库requests登录zhihu

    废了很大劲,开始搞错了登录post信息的网址,后来没找到xsrf信息,看了很多文章才搞定. 大概过程如下: 打开登录页面,同时打开fldder,输入信息去监控过程. 查看post了哪些信息,哪些是自己 ...

  5. POJ2387 Til the Cows Come Home(SPFA + dijkstra + BallemFord 模板)

    Til the Cows Come Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37662   Accepted ...

  6. shell中条件判断if中的-z到-d的意思

    shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 ...

  7. cmd批处理常用符号详解

    cmd批处理常用符号详解 作者: 字体:[增加 减小] 类型:转载 我们在批处理编写过程中经常遇到各种特殊符号,很多朋友不是很清楚cmd中特殊符号的含义,这里简单的介绍下,方便需要的朋友   1.@一 ...

  8. linux tail命令的使用方法详解(转)

    本文介绍Linux下tail命令的使用方法.linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新 ...

  9. jquery uploadify 使用

    /*进度条框*/ .shangchuantishikuang { border: 7px solid #74A5BF; background-color: white; font-size: 14px ...

  10. tcpdump 时报ServFail 0/0/1 (97)

    ServFail           结合业务应该是dns   server fail 0/0/1               1/0/0表示机器号/槽位号/子接口号                 ...