摘要
目前局域网中参与配置的有三台机器,要配置这三台机器免密登录。
配置主机名
配置主机名其实相当于在这三台机器上各自备份一个路由表,由IP到主机名之间的映射。
下面以 177.11.12.115
为例,修改主机名:1
vi /etc/hostname
将其中的内容修改为:1
oolong116
然后增加映射:1
vi /etc/hosts
在文件末尾添加以下内容:1
2
3177.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 | [root@oolong116 .ssh]# ssh oolong115 |
此时,就登录上了 115 了。
批量拷贝秘钥到远程主机
安装 sshpass
1 | yum install sshpass |
编写脚本
进入秘钥所在目录 /root/.ssh
,创建以下两个文件:
remote-hosts
1 | weilu131 |
copyscript.sh
1 | for host in $(cat remote-hosts) |
其中参数 -p '1234'
表示密码,这里几台机器使用的相同密码,根据情况修改。
保存后需要修改拷贝脚本的权限:
1 | chmod 777 copyscript.sh |
然后执行拷贝:
1 | ./copyscript.sh |