| 关键词: hadoop ssh 公钥 登录 oc 本机 root rsa 主机 22022 |
当有多台服务器彼此进行通信时,可以通过使用ssh来免去输入密码的步骤。这篇文章将以两台服务器作为范例,演示如何通过ssh进行登录。 在未配置ssh之前,首先需要安装ssh:
一、本机ssh登录假设有两台主机,IP分别是:10.19.106.103 和 10.19.106.104,主机名分别为oc-hadoop01和oc-hadoop02。我们先配置oc-hadoop01,使其可以登录自身(即从oc-hadoop01登录oc-hadoop01)。 先使用Xshell登录到oc-hadoop01,再使用下面的命令尝试登录自己:
上面我们将默认的端口号22更改为22022了。 ![]() 此时因为还没有进行配置,会发现系统要求输入密码,当输入和Xshell一样的密码时,可以登录成功。 二、创建无密码的公钥接下来,使用下面的命令,创建无密码的公钥: ssh-keygen -t rsa -P "" 出现输入文件名的提示时,可以直接按回车不指定,系统会采用默认的名称。这样会在~/.ssh文件夹下生成两个文件,id_rsa(私钥)和id_rsa.pub(公钥)。 [root@oc-hadoop01 ~]# ls /root/.ssh id_rsa id_rsa.pub known_hosts 继续执行下面命令: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 这条命令将会把ssh公钥加入到authorized_keys当中。这样,拥有ssh公钥的机器就可以实现免密登录了(当前就是本机)。再次使用ssh -p 22022 localhost进行登录: 此时,不再需要密码就可以成功登录了。 三、其他服务器ssh登录本机上一部分我们完成了自己的ssh登录,接下来就要完成从oc-hadoop02 ssh登录到oc-hadoop01。原理和上面是类似的:先生成oc-hadoop02的公钥、私钥,然后将oc-hadoop02的公钥,加入到oc-hadoop01的authorized_keys当中。 在oc-hadoop02上,再次执行下面命令生成密钥对: ssh-keygen -t rsa -P "" 在oc-hadoop02上,使用cat输出一下公钥的内容: [root@oc-hadoop02 ~]# cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp3AkoaQ7buBoZCCNt+JRoOifd4WlJyu/QLo0YvdaFr7evcBzi82oGL/CMYPfLX4AvlmNGVTGLwKzeA2bKKcBWA+QzM4+F1ZrlOT/jqX1cy+Zj7Zhf1pGLLZXY+64hayGy+hPJ1ycCnsFH+vAYLCCXqS3CgpS6gQ7e8gzneBtJOx3rwvuPOFiWY0d8LOE8onuX86fUNDSibdJMmHGPyMla+xVMFvkG36ZBfHc6gnBAixaIIiobhE34x75Hc+SrSN6ty9RCCOYYvkWJU7JDe7aySqywoyVxWFgB3v5Kso0RY82V1M+Q9/iGW4MI+REMMEK+Z8VdsgcJo819usyrUB3P root@oc-hadoop02 在oc-hadoop01上(即要登录的机器,我们是从oc-hadoop02登录oc-hadoop01)上,将上面公钥的内容写入authorized_keys: [root@oc-hadoop01 ~]# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp3AkoaQ7buBoZCCNt+JRoOifd4WlJyu/QLo0YvdaFr7evcBzi82oGL/CMYPfLX4AvlmNGVTGLwKzeA2bKKcBWA+QzM4+F1ZrlOT/jqX1cy+Zj7Zhf1pGLLZXY+64hayGy+hPJ1ycCnsFH+vAYLCCXqS3CgpS6gQ7e8gzneBtJOx3rwvuPOFiWY0d8LOE8onuX86fUNDSibdJMmHGPyMla+xVMFvkG36ZBfHc6gnBAixaIIiobhE34x75Hc+SrSN6ty9RCCOYYvkWJU7JDe7aySqywoyVxWFgB3v5Kso0RY82V1M+Q9/iGW4MI+REMMEK+Z8VdsgcJo819usyrUB3P root@oc-hadoop02" >> ~/.ssh/authorized_keys 在oc-hadoop02上,使用ssh登录到oc-hadoop01: ssh -p 22022 oc-hadoop01 注意:我们已经在oc-hadoop02的/etc/hosts中配置好了oc-hadoop01对应的ip地址。 第一次登录时,会提示是否继续连接(和使用Xshell第一次连接主机时一样),输入yes,可以看到已经成功登录到了oc-hadoop01了。输入exit,会重新退回到oc-hadoop02。 [root@oc-hadoop01 ~]# exit logout Connection to oc-hadoop01 closed. [root@oc-hadoop02 ~]# 四、使用ssh-copy-id工具上面的配置方法相对基础,有一个ssh-copy-id的工具,可以快速地实现上面的过程,将本机的公钥复制到远程主机的authorized_keys文件上。 我们有三台主机:oc-hadoop01、oc-hadoop02、oc-hadoop03,如果想要从本机远程对它们进行登录,可以执行下面的命令,将本机的公钥拷贝过去: ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22022 root@oc-hadoop01 ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22022 root@oc-hadoop02 ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22022 root@oc-hadoop03 如果不是root用户,假如说用户名是hadoop,且端口号为22001,那么只要稍微修改一下语句就可以了: ssh-copy-id -i $HOME/.ssh/id_rsa.pub -p 22001 hadoop@oc-hadoop01 ssh-copy-id -i $HOME/.ssh/id_rsa.pub -p 22001 hadoop@oc-hadoop02 ssh-copy-id -i $HOME/.ssh/id_rsa.pub -p 22001 hadoop@oc-hadoop03 下面演示将主机oc-hadoop01的公钥拷贝到主机oc-hadoop02的过程: ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22022 root@oc-hadoop02 过程中,需要输入登录到oc-hadoop02的密码。 完成之后,就可以使用ssh -p 22022 oc-hadoop02免密登录了。 [root@oc-hadoop01 ~]# ssh -p 22022 oc-hadoop02 Last failed login: Mon Aug 17 10:46:50 CST 2020 from sf106104 on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Mon Aug 17 10:20:00 2020 from 10.16.10.54 此时,可以在主机 oc-hadoop02 查看~/.ssh/authorized_keys 文件内容,和之前我们手工复制的结果是一样的。 在主机oc-hadoop01 上,采用相同的步骤,将公钥复制到主机oc-hadoop03 上。 ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22022 root@oc-hadoop03 在主机oc-hadoop02和oc-hadoop03上执行类似的命令。 至此,我们已经了解如何配置ssh的免密登录了。配置好ssh还有一个作用就是可以方便地使用scp工具在不同的linux服务器间拷贝文件。 (此处已添加圈子卡片,请到今日头条客户端查看) |
| 本文出处: https://www.toutiao.com/a6869951881221767692/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|