ssh免密登录配置

ssh ip可以登录远程一台电脑,但是一般情况下需要输入密码。
实际搭建hadoop等类集群的时候,往往需要一台电脑远程登录很多台电脑,而且这些电脑往往又是同样的操作。我们不可能每一台电脑每一次都要输入密码,这样很浪费时间。配置ssh免密登录,一般只要第一次登录输入密码就可以了。

ssh免密配置网上有很多种方式,但是只要把握其中原理,就可以举一反三,拨开迷雾看清本质。

现在个人推荐一种极其简单的配置方式。

一. 准备工作

  1. 安装必须的软件
    这里我们需要安装ssh-keygen和ssh-copy-id, 安装方式如下:
[root@s201 ~]# yum install -y ssh-keygen
Loaded plugins: fastestmirror
base                                                                                                                  | 3.6 kB  00:00:00     
epel                                                                                                                  | 5.3 kB  00:00:00     
extras                                                                                                                | 2.9 kB  00:00:00     
updates                                                                                                               | 2.9 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: ftp.sjtu.edu.cn
 * extras: ftp.sjtu.edu.cn
 * updates: ftp.sjtu.edu.cn
No package ssh-keygen available.
Error: Nothing to do
[root@s201 ~]# yum install -y ssh-copy-id
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.sjtu.edu.cn
 * extras: ftp.sjtu.edu.cn
 * updates: ftp.sjtu.edu.cn
No package ssh-copy-id available.
Error: Nothing to do
[root@s201 ~]# 
  1. 修改/etc/hosts文件,配置主机名与域名的对应关系,方便操作
    关于/etc/hosts,具体可以参见Linux 下hosts文件详解
    配置如下图所示,多台机器以此类推:
#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.201 s201
192.168.1.202 s202
192.168.1.203 s203
192.168.1.204 s204

二、ssh-keygen创建公钥-私钥对

做好了前面的准备工作,现在可以进入家目录(~),ssh ip一台电脑,此时家目录下面就会自动生成一个.ssh空文件目录。然后cd进入.ssh文件目录,执行ssh-keygen。

/root
[root@s201 ~]# ssh s202
Warning: Permanently added 's202,192.168.1.202' (ECDSA) to the list of known hosts.
Last login: Fri Oct 18 08:25:50 2019 from s201
[root@s202 ~]# exit
[root@s201 ~]#cd  .ssh 
[root@s201 .ssh]# ssh-keygen  -t   rsa    -f  ~/.ssh/id_rsa   -C "备注信息"
                              ~密钥类型  ~密钥文件路径及名称   ~ 备注信息
Generating public/private rsa key pair.
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:
9a:e3:94:b9:69:c8:e9:68:4b:dc:fa:43:25:7f:53:f1 备注信息
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|          .      |
|           o     |
|    . .   . E    |
|     +  S.       |
| . .. .=o        |
|  oo.oB. .       |
| ..o=o.+         |
| .++oo+          |
+-----------------+
注意:ssh-keygen常用参数说明:
    -t: 密钥类型, 可以选择 dsa | ecdsa | ed25519 | rsa;
    -f: 密钥目录位置, 默认为当前用户home路径下的.ssh隐藏目录, 也就是~/.ssh/, 同时默认密钥文件名以id_rsa开头. 如果是root用户, 则在/root/.ssh/id_rsa, 若为其他用户, 则在/home/username/.ssh/id_rsa;
    -C: 指定此密钥的备注信息, 需要配置多个免密登录时, 建议携带;
    -N: 指定此密钥对的密码, 如果指定此参数, 则命令执行过程中就不会出现交互确认密码的信息了.
    举例说明: 同时指定目录位置、密码、注释信息, 就不需要输入回车键即可完成创建:
    ssh-keygen -t rsa -f ~/.ssh/id_rsa -N "123456" -C  "备注信息"

这时候生成两个文件id_rsa,id_rsa.pub,主要用公钥。

[root@s201 ~]# cd .ssh
[root@s201 .ssh]# ls
id_rsa  id_rsa.pub
#生成的文件以id_rsa开头, id_rsa是私钥, id_rsa.pub是公钥
[root@s201 .ssh]# cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLWG4Bm1H5e8s8eiUe5FPl+Yf7NjNpMV42tduNZPWmg7Cs0fnxynSsm/HzOiw3Ts4RQT24K/zh+Cm8T1mAjgwCftjnVGgWs14tTpHtNhlWuVrn+RH7AoxLD6zTmK4h+deb8CI/n4AzUr2t8JadDIdDTYopAoniuN+QBNw8KhQ+Qmg+eeJeMV4mDFSEELw2G73R3szN632sqpmqyOQpKC0P24c8kx/jI/xey3HAc73w/BoGAOQ/ZJes3kj6+DjUI82L3adZljIkz7chZfymmYv77WGLAyYc83KFI000nF7QH550ogcJH0Xj1S9DmJ69LAREHD0diwfXOsgaHPuftZyh root@s201
[root@s201 .ssh]# 

三、scp发送公钥

将s201的公钥文件id_rsa.pub远程复制到s201、s202、s203、s204主机上。复制到s201,是为了实现自身的 免密登录,这是为后面写xcall、xsync等脚本服务的。

[root@s201 .ssh]# scp id_rsa.pub  root@s201:/root/.ssh/authorized_keys
[root@s201 .ssh]# scp id_rsa.pub  root@s202:/root/.ssh/authorized_keys
[root@s201 .ssh]# scp id_rsa.pub  root@s203:/root/.ssh/authorized_keys
[root@s201 .ssh]# scp id_rsa.pub  root@s204:/root/.ssh/authorized_keys

这样由于远程主机上都拿到了和s201一样的公钥,就相当于在每台远程主机上都配了一把可以用s201公钥打开的锁,这样s201就可以免密登录拥有这把锁的主机了。

至此,免密码登录已经设定完成,注意第一次ssh登录时需要输入密码,再次访问时即可免密码登录。

===============================================================================
本文创作详细参见:

  1. Linux - 配置SSH免密通信 - “ssh-keygen”的基本用法
  2. 集群环境ssh免密码登录设置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值