SSH介绍
SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
SSH原理:节点A要实现无密码公钥认证连接到节点B上时,节点A是客户端,节点B是服务端。需要在客户端A上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到服务端B上。当客户端A通过ssh连接服务端B时,服务端B就会生成一个随机数并用客户端A的公钥对随机数进行加密,并发送给客户端A。客户端A收到加密数之后再用私钥进行解密,并将解密数回传给B,B确认解密数无误之后就允许A进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端A公钥复制到B上。
准备
操作系统为:centos-release-7-5.1804.el7.centos.2.x86_64
三台机器
机器名 | IP |
---|---|
master | 192.168.0.128 |
slave1 | 192.168.0.129 |
slave2 | 192.168.0.130 |
检查是否安装SSH
[root@slave1 ~]# rpm -qa |grep ssh
libssh2-1.4.3-10.el7_2.1.x86_64
openssh-clients-7.4p1-16.el7.x86_64
openssh-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
已经安装里SSH,如果没安装的话,使用yum install ssh安装。
在hosts里添加各机器名和IP
在hosts里添加各机器名和IP的映射后,就可以通过机器名访问对应的机器,不需要记忆和输入复杂的IP了。
在文件/etc/hosts文件的末尾添加如下内容:
192.168.0.128 master
192.168.0.129 slave1
192.168.0.130 slave2
生成公私钥
回到家目录,执行ssh-keygen -t rsa,然后一路回车,在家目录下生成.ssh文件夹,其中包括公私钥文件。
[root@slave1 ~]# cd ~
[root@slave1 ~]# ssh-keygen -t rsa
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:QuZWoxNQTWlFd5/wHmGiO/aQJH97sExwWO8gOzT38WI root@slave1
The key's randomart image is:
+---[RSA 2048]----+
| ...o.+o .+.o |
| . + .+.*.o|
| +.o. O + *.|
| + + .= X = +|
| * S X +E+.|
| . o . O.+. |
| = . |
| . |
| |
+----[SHA256]-----+
[root@slave1 ~]#
在另外两台机器上也执行同样的操作
生成authorized_keys文件
在master的.ssh目录下创建authorized_keys文件,把三台机器的公钥(id_rsa.pub)复制进去。
通过SSH访问
下载就可以通过ssh + 机器名免密码登录其他机器了。
[root@slave2 ~]# ssh master
The authenticity of host 'master (192.168.0.128)' can't be established.
ECDSA key fingerprint is SHA256:VWkIQqhsAv3JSSYIPhVakh7bJZHzPA6xNH2mnwoJSko.
ECDSA key fingerprint is MD5:da:31:b0:ae:86:00:d3:93:af:04:f0:2e:02:4b:b4:31.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'master,192.168.0.128' (ECDSA) to the list of known hosts.
Last login: Mon Jun 4 15:20:34 2018 from 192.168.0.1
[root@master ~]#
[root@master ~]#
[root@master ~]#