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登录作验证
更多推荐