1.总结通过ssh远程登录linux的原理过程

基于口令的认证

  • 客户端和服务端建立TCP连接
协商阶段
  • 双方进行ssh版本协商
密钥协商阶段
  • 在服务器端生成一对密钥,将公钥传递给客户端,客户端将密钥C用服务端的公钥进行加密后传递给服务端,服务端用私钥解密得到密钥C。
认证阶段
  1. 使用密钥C将用户名加密后发送给服务端
  2. 服务端使用密钥C解密后确认用户名存在,应答信息
  3. 客户端使用密钥C加密登录密码后发送给服务端
  4. 服务端使用密钥C解密后,确认身份,成功登录。
通信阶段
  • 数据通信阶段,双方用密钥C加密通信。

基于密钥的认证

  1. 在客户端生成生成一对密钥,将公钥传送到服务端上。
  2. 客户端和服务端建立TCP连接
协商阶段
  • 双方进行ssh版本协商
密钥协商阶段
  • 在服务器端生成一对密钥,将公钥明文传递给客户端,客户端将密钥C用服务端的公钥进行加密后传递给服务端,服务端用私钥解密得到密钥C。
认证阶段
  1. 客户端发送请求使用密钥进行认证并将自己的公钥发送给服务端
  2. 服务端收到请求与公钥后,与自己本地的公钥进行比对,如果一样,则生成一段随机值并用公钥加密,发送给客户端。
  3. 客户端收到后用私钥进行解密,将解密后的数据发送给服务端。
  4. 服务端确认后,成功登录。
数据通信阶段
  • 基于密钥C进行通信。

2.配置两台主机的远程连接实现免密登陆

  1. 根据密钥认证的流程,首先在客户端上生成一对密钥。使用ssh-keygen命令创建密钥对。
ssh-keygen -t rsa # -t选项可以指定密钥类型

image-20221017220046543

  1. 将公钥发送给服务端,可以使用命令ssh-copy-id直接发送,也可以使用scp命令进行传输。
ssh-copy-id -i [公钥文件] [用户@域名/IP]  #ssh-copy-id命令
scp [文件] [用户@域名/IP]:[目录]  #scp命令

image-20221017221916710
3. 最后使用ssh登录作验证

image-20221017222506452

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐