CentOS 7.4 配置SSH免密登录

摘要

目前局域网中参与配置的有三台机器,要配置这三台机器免密登录。

配置主机名

配置主机名其实相当于在这三台机器上各自备份一个路由表,由IP到主机名之间的映射。
下面以 177.11.12.115 为例,修改主机名:

1
vi /etc/hostname

将其中的内容修改为:

1
oolong116

然后增加映射:

1
vi /etc/hosts

在文件末尾添加以下内容:

1
2
3
177.11.12.113 oolong113
177.11.12.115 oolong115
177.11.12.115 oolong116

别忘了重启一下电脑,不然hostname不会生效

1
reboot

测试:

1
2
3
4
5
[root@localhost local]# ping oolong115
PING oolong115 (177.11.12.115) 56(84) bytes of data.
64 bytes from oolong115 (177.11.12.115): icmp_seq=1 ttl=64 time=0.230 ms
64 bytes from oolong115 (177.11.12.115): icmp_seq=2 ttl=64 time=0.121 ms
64 bytes from oolong115 (177.11.12.115): icmp_seq=3 ttl=64 time=0.115 ms

这时,我们已经可以使用主机名 oolong115 来代替IP 177.11.12.115
同样的方法对另外两台机器设置,这样三台机器之间就可以通过主机名互相访问了。

生成密钥

使用命令 ssh-keygen 生成密钥,在生成过程中会要求输入存放目录等内容,可以不输入,回车即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@oolong113 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:
SHA256:jpatt7hZb3V2sLjWm6Wvz3cLo2uFaOPGVpFCMBBsrvE root@oolong113
The key's randomart image is:
+---[RSA 2048]----+
| .ooo. |
| o .. |
| o . . |
| . . . o . |
| + S o o. o |
| . E = + oo.+ .|
| + B o..B ..|
| . =.*..+ +=o|
| =o+oo+. =*B|
+----[SHA256]-----+

进入目录 /root/.ssh/ 可以看到生成以下的两个文件:

1
2
-rw-------. 1 root root 1679 Sep 12 19:37 id_rsa
-rw-r--r--. 1 root root 397 Sep 12 19:37 id_rsa.pub

如法炮制,给另外两台机器也生成密钥。

拷贝秘钥

这里需要注意,要使用SSH的命令来拷贝秘钥,因为里面不能有其他字符,如果是通过文件编辑工具打开拷贝,可能会产生多余的换行符等内容,可能产生的问题是A能免密登录B,但B不能免密登录A。
比如当前在 oolong116 这台机器上,进入 /root/.ssh/ 目录,执行下面命令,将秘钥拷贝到 113 上:

1
ssh-copy-id -i id_rsa.pub root@oolong113

拷贝后检查 113 的 /root/.ssh 目录下有没有 authorized_keys 文件。

依次的拷贝到其他机器上,同样的将其他机器上的秘钥要拷贝到176 上

测试

1
2
3
[root@oolong116 .ssh]# ssh oolong115
Last login: Thu Sep 13 05:32:43 2018 from 177.11.12.115
[root@oolong115 ~]#

此时,就登录上了 115 了。

批量拷贝秘钥到远程主机

安装 sshpass

1
yum install sshpass

编写脚本

进入秘钥所在目录 /root/.ssh,创建以下两个文件:

remote-hosts

1
2
3
4
weilu131
weilu132
weilu135
weilu151

copyscript.sh

1
2
3
4
for host in $(cat remote-hosts)
do
sshpass -p '1234' ssh-copy-id -o StrictHostKeyChecking=no root@${host}
done

其中参数 -p '1234' 表示密码,这里几台机器使用的相同密码,根据情况修改。

保存后需要修改拷贝脚本的权限:

1
chmod 777 copyscript.sh

然后执行拷贝:

1
./copyscript.sh