SSH简介
SSH是Secure Shell的缩写,也叫做安全外壳协议。SSH的主要目的是实现安全远程登录。SSH是一种用于安全访问远程服务器的网络协议。它将客户端与服务端之间的消息通过加密保护起来,这样就无法被窃取或篡改了。
SSH工作原理
SSH的安全性比较好,其对数据进行加密的方式主要有两种:对称加密(密钥加密)和非对称加密(公钥加密)。
对称加密:在对称加密中,客户端和服务端使用同一个密钥对数据进行加密和解密。这种方法的好处是加密强度高,很难破解。缺点也很明显,即密钥本身容易被泄漏。因此,如何保存密钥成为了关键问题。
非对称加密:在非对称加密中有两个密钥,公钥和私钥。这两个密钥配对产生和使用。用公钥加密的数据,必须用与其对应的私钥才能解开。并且,私钥无法通过公钥获取。因此,公钥是可以被公开的,而私钥则必须被安全存放。公钥加密后的密文,只能通过对应的私钥进行解密。想从公钥推理出私钥几乎不可能,所以非对称加密的安全性比较高。
两种级别的安全验证方式
第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
第二种级别(基于密匙的安全验证):需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
客户机间SSH免密登录
1.生成密钥对
[root@localhost ~]# 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:LCxPlDFpovx7HnGXPn0ULvGArz6yrzzrvfpeeZ4eHZE root@localhost.localdomain
The key's randomart image is:
+---[RSA 3072]----+
| o. |
| . o+ . .|
| . . oo . o .E |
| o o . o = ..|
| .. = S o o +. |
| .+ + o o + ..|
| .o + + + .|
| . .ooo.o + o |
| o..B@Bo .+ |
+----[SHA256]-----+
[root@localhost ~]# ll /root/.ssh
total 12
-rw-------. 1 root root 2610 Oct 15 22:14 id_rsa
-rw-r--r--. 1 root root 580 Oct 15 22:14 id_rsa.pub
2.发送公钥到要连接的服务器主机
[root@localhost ~]# ssh-copy-id -i 192.168.138.132
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.138.132's password:
3.在另一台设备相同目录找到公钥
[root@localhost ~]# ll /root/.ssh
total 4
-rw-------. 1 root root 580 Oct 15 22:25 authorized_keys