问题
当我们环境中服务器数量较多,特别是对于我们生产环境下,当然我们在服务器数量较多时,一般都会有一台DMZ的可信机器,然后通过DMZ机器SSH远程到各个服务器上进行操作,但是每次SSH都要输入用户名,密码等信息,比较繁琐,特别是对于服务运维很不方便,这时候我们就可以通过设置各个服务和DMZ机器为可信机器,这样我们就可以通过DMZ远程免密码登录,非常方便。
原理
通过Linux的ssh-keygen在DMZ机器上生成private和public密钥,将生成的public密钥拷贝到需要远程机器上, 然后就可以使用ssh命令无需密码登录到机器上。
PS : 在linux系统中,SSH是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法【默认是DSR算法】,该工具做linux系统的远程管理是非常安全的。
使用步骤
- 登录DMZ机器(生成公钥和私钥)
[root@ecs-dev-001 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
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:tsOpX0dRmOt56wirlIYGvdZddV+wa2d/7P+7vBC1jw4 root@ecs-dev-001.novalocal
The key's randomart image is:
+---[RSA 2048]----+
| oo |
| o. o |
| ..o.o|
| . .o.o+|
| . . S .ooo.+|
| . * = oo.o=o|
| = X + Eo..=|
| o + o + ++..|
| ..o.. ..o=X|
+----[SHA256]-----+
PS: 公钥和私钥文件id_rsa和id_rsa.pub都会保存在当前用户目录下的.ssh目录下
- 复制公钥文件到指定远程机器
[root@ecs-dev-001 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.31.41.154
PS:第一次需要输入密码,拷贝完成后,就不需要密码了
- 配置hosts文件
如果不配置hosts文件,那么每次登录机器都需要完整的IP地址,所以我们为每一台机器的业务配置一个别名,如果集群的服务业务则采用一个规则命名,如:ethiopia-fdfs-001
[root@ethiopia-business-service-001 bin]# more /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.31.41.154 ethiopia-fdfs-001
- 登录远程机器
[root@ethiopia-business-service-001 bin]# ssh ethiopia-fdfs-001
Last login: Thu Nov 29 16:56:45 2018 from 172.31.41.155
Welcome to Alibaba Cloud Elastic Compute Service !
[root@ethiopia-fdfs-001 ~]#
这样就大功告成了!!!