1.总结通过ssh远程登录linux的原理过程
基于口令的认证
客户端和服务端建立TCP连接协商阶段
双方进行ssh版本协商密钥协商阶段
在服务器端生成一对密钥,将公钥传递给客户端,客户端将密钥C用服务端的公钥进行加密后传递给服务端,服务端用私钥解密得到密钥C。认证阶段
使用密钥C将用户名加密后发送给服务端服务端使用密钥C解密后确认用户名存在,应答信息客户端使用密钥C加密登录密码后发送给服务端服务端使用密钥C解密后,确认身份,成功登录。通信阶段
数据通信阶段,双方用密钥C加密通信。基于密钥的认证
在客户端生成生成一对密钥,将公钥传送到服务端上。客户端和服务端建立TCP连接协商阶段
双方进行ssh版本协商密钥协商阶段
在服务器端生成一对密钥,将公钥明文传递给客户端,客户端将密钥C用服务端的公钥进行加密后传递给服务端,服务端用私钥解密得到密钥C。认证阶段
客户端发送请求使用密钥进行认证并将自己的公钥发送给服务端服务端收到请求与公钥后,与自己本地的公钥进行比对,如果一样,则生成一段随机值并用公钥加密,发送给客户端。客户端收到后用私钥进行解密,将解密后的数据发送给服务端。服务端确认后,成功登录。数据通信阶段
基于密钥C进行通信。2.配置两台主机的远程连接实现免密登陆
根据密钥认证的流程,首先在客户端上生成一对密钥。使用ssh-keygen命令创建密钥对。ssh-keygen -t rsa # -t选项可以指定密钥类型
将公钥发送给服务端,可以使用命令ssh-copy-id直接发送,也可以使用scp命令进行传输。
ssh-copy-id -i [公钥文件] [用户@域名/IP] #ssh-copy-id命令scp [文件] [用户@域名/IP]:[目录] #scp命令
3. 最后使用ssh登录作验证