一:基于密钥的登录方式
(1)首先在客户端生成一对密钥(公钥、私钥)
(2)客户端将生成的公钥拷贝到需要访问的服务端机器上
(3)当客户端再此发送一个连接请求,包括IP,用户名
(4)服务端得到客户端的请求后,会到authroized_keys中查找,如果有相应的IP和用户,就会随机生成一个字符串,例如:qwer;
(5)服务端将使用客户端拷贝过来的公钥对随机字符串“qwer”,进行加密然后发送给客户端
(6)得到服务端发来的信息后,客户端会使用私钥进行解密,然后将解密的字符串发送给服务器
(7)服务器接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录。
下面我将由node-1和node-2虚拟机进行描述
把node-1看成客户端,node-2看成服务器
连接node-2:ssh root@192.168.79.130,输入yes,然后输入相应的密码,就会进入node-2,输入exit,就会返回node-1
再此连接node-2,还是需要输入密码
我们输入ps -ef | grep sshd,ssh-keygen -l rsa,我们会得到密钥随机的一对钥匙,拷贝至服务端
客户端向服务端发送请求,查看密钥的内容,输入ll -a,进入ssh,然后输入ll查看,其中有id_rsa.pub,id_rsa的一对密钥
输入ssh-copy-id 192.168.79.130,输入密码,服务端会进行核实,如果正确,则进入node-2,下次再进入时则免密
注:从服务端进入客户端则不能免密,所以,密钥是非对称的。
二:OpenSSH使用
OpenSSH是SSH协议的免费开源实现
OpenSSH是客户端和服务端的软件组成服务端是一个守护进程(daemon),他在后台运行并响应来自客户端的连接请求。服务端一般是sshd进程,提供了对远程连接的处理。
客户端包含ssh程序以及像scp(远程拷贝),slogin(远程登录),sftp(安全文件传输)等其他的应用程序。
默认情况下,centos系统会自带安装OpenSSH服务