SSH协议框架中最主要的部分是3个协议.

(1)传输层协议(The Transport Layer Protocol):传输层协议提供服务器认证、数据机密性、信息完整性

(2)用户认证协议(The User Authentication Protocol):用户认证协议为服务器提供客户端的身份鉴别

(3)连接协议(The Connection Protocol):连接协议将加密的信息隧道复用成若干个逻辑隧道,提供给更高层的应用协议使用

在客户端看来,SSH提供两种级别的安全认证 :第一种就是基于密码的安全认证、第二种就是基于密钥的安全认证

ssh远程主机默认用户是root用户,如果是第一次会出现警告此处只需输入yes就行了,openssh会将这台计算机识别标记加入~/.ssh/know_hosts文件中,第二次连接时就不会再提示。当然这也是第一种基于密码的认证

(1)下面是基于密钥的认证,使用如下命令生成密钥对文件

ssh-keygen

①输入密钥文件的名称,直接回车即可(如有多台服务器,需输入不同的文件名)

②输入私钥文件密码

③完成后在用户家目录.ssh中会自动生成密钥对文件,id_rsa为私钥文件,id_rsa.pub为公钥文件。

(2)使用如下命令把公钥复制到远程主机

ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip

①输入远程主机密码

②公钥复制过去后会自动更名为authorized_keys,并复制到ssh-copy-id命令指定用户家目录中

在上述配置完成后使用ssh连接远程主机,提示输入密码就不是用户的密码而是在生成密钥对时设置的密码

通过下面命令启用ssh代理功能在启用后连接远程主机就不用再输入密码,在输入第二个命令时会要求输入生成密钥对时设置的密码

ssh-agent bash

ssh-add

OK了!