基于密钥的连接:实现不输入密码登录远程主机,是相对于用户来说的
公钥(Public Key)与私钥(Private Key)
--是通过一种加密算法得到的一个密钥对
--公钥是密钥对中公开的部分。公钥由本人公开,用于加密和验证签名,是给别人用的。
--私钥则是非公开的部分。私钥用来进行解密和签名,给自己用。
--通过这种算法得到的密钥对能保证在世界范围内是唯一的。
--使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。
--当该用户发送文件时,用私钥签名,别人用他给的公钥解密,可以保证该信息是由他发送的。即数字签名。
--当该用户接受文件时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他接收到。可以避免被其他人看到。
--如果是对称加密算法就一样;如果是非对称加密算法,公钥和私钥是不一样的。
注:如果你想在远程连接某台机器不输入密码的话,那么就将自己的公钥拷贝给它。
如果对方改密码了,不影响访问,因为文件里存的不是密码,是指纹信息字符串,就不走密码验证了。
如果想互相访问无密码,那么就互相把公钥给对方即可。
具体实验:
实验环境:
node1:192.168.0.100
node2:192.168.0.102
2、在node1生成密钥对
[[email protected] ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa): <--空
Created directory ‘/home/oracle/.ssh‘.
Enter passphrase (empty for no passphrase): <--空
Enter same passphrase again: <--空
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
1f:b8:c3:c0:8c:69:a4:76:02:38:1a:1e:ed:06:06:30 [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|E |
|o.. |
|=+ .. |
|+++o = . |
|..+o= + S . |
| ..+ o o . |
| + . |
| . |
| |
+-----------------+
[[email protected] .ssh]$ pwd
/home/oracle/.ssh
[[email protected] .ssh]$ ls
id_rsa(私钥) id_rsa.pub(公钥)
#使用证书登录ssh
ssh-keygen 生成公私钥
一路回车
进入~/.ssh
ssh-copy-id -i id_rsa.pub [email protected]
即将公钥存放到了172.16.5.88的~/.ssh/authorized_keys 目录下。
4、测试:
[[email protected] .ssh]$ ssh 192.168.0.102 --实现无密码连接
Last login: Tue Apr 14 13:21:57 2015 from 192.168.0.100
[[email protected] ~]$