博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux SSH 基于密钥交换的自动登录原理简介及配置说明
阅读量:4709 次
发布时间:2019-06-10

本文共 2852 字,大约阅读时间需要 9 分钟。

协商交互过程

  1.  客户端向目标服务器发送登录请求。在SSH 服务启用了证书验证登录方式后,会优先通过证书验证方式进行登录验证。 

  2. 目标服务器根据 SSH 服务配置,在用户对应目录及文件中读取到有效的公钥信息。
  3. 目标服务器生成一串随机数,然后使用相应的公钥对其加密。

  4. 目标服务器将加密后的密文发回客户端。

  5. 客户端使用默认目录或 -i 参数指定的私钥尝试解密。

  6. 如果解密失败,则会继续尝试密码验证等其它方式进行登录校验。如果解密成功,则将解密后的原文信息重新发送给目标服务器。意思类似于:“看,这是这段话的原文。我能读懂发过来的密文,我拥有服务器的控制权,请让我登录。”

  7. 目标服务器对客户端返回的信息进行比对。如果比对成功,则表示认证成功,客户端可以登录。如果对比失败,则表示认证失败,则会继续尝试密码验证等其它方式进行登录校验。

证书校验交互登录流程示意图所示:

 

Linux客户端演示登录:

1、在客户端本地生成一对儿密钥:

[root@localhost ~]# ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsaGenerating public/private rsa key pair.Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:cb:e4:e8:69:19:86:f7:52:59:95:43:40:ce:c9:06:b9 root@localhost.localdomainThe key's randomart image is:+--[ RSA 2048]----+|        .ooo..   ||        .= .+    ||         .*. .   ||        E..      ||     .  So       ||    . +=o.       ||     o.=+        ||     .+..        ||     .o.         |+-----------------+

 

 

2、在客户端,将公钥复制到要登录的远程主机的某用户的家目录下的特定文件中:

[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.77.131The authenticity of host '192.168.77.131 (192.168.77.131)' can't be established.ECDSA key fingerprint is dd:6d:e8:68:72:c9:8f:d8:32:18:ba:19:6e:52:4a:60.Are you sure you want to continue connecting (yes/no)? yes/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysroot@192.168.77.131's password:Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@192.168.77.131'"and check to make sure that only the key(s) you wanted were added.

 

 

3、测试登录:

[root@localhost ~]# ssh root@192.168.77.131Last login: Sat Mar 25 21:03:27 2017 from 192.168.77.1[root@localhost ~]# ip addr list ens373: ens37: 
mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:f0:98:fd brd ff:ff:ff:ff:ff:ff inet 192.168.77.131/24 brd 192.168.77.255 scope global dynamic ens37 valid_lft 1280sec preferred_lft 1280sec inet6 fe80::41e6:5671:d095:3c24/64 scope link valid_lft forever preferred_lft forever[root@localhost ~]# exitlogoutConnection to 192.168.77.131 closed.

 

 

 

Windows环境Xshell登录演示:

  1. 打开Xshell程序。
  2. 单击 工具 > 用户密钥管理者 ,再点击 生成 。
  3. 在打开的密钥创建向导中,选择默认的 RSA 密钥算法及密钥长度(默认 2048 位)后,点击 下一步 。
  4. 程序生成密钥对后,点击 下一步。
  5. 如前面所述,密钥加密密码留空:

 

 

 

 6、复制生成的公钥到目标主机的/root/.ssh/authorized_keys 尾部追加

 

 

 

 

[root@localhost ~]# echo 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1WPScj31fl+c8biyb9PbQILRX5s4fZkdaOAqy2d043edDkbVi0FHymyVELu5cIBmJ8oQIBnHAs9jQmzxyDNQoZ0hO3lUC6a9eqp0kgj/dX31FghJzCVK5+dE9qSvGu6nRz3wN5F/xvs/hTuFzipFBwB1C51lchdrUiZcDfSrqMkWhKcmF+axK0CKHSDo2lwxqYCcW9b1d7Ww==' >> /root/.ssh/authorized_keys

 

 7、复制完成后返回Xshell,输入目标主机IP,用户身份认证选择公钥认证:

 

点击“确定” 就能连接上了。

 

转载于:https://www.cnblogs.com/chengtai/p/6618621.html

你可能感兴趣的文章
redis cluster
查看>>
feign传输String json串 自动转义 \ 解决方法
查看>>
本站已稳定运行了XX天,网页时间显示功能实现方法
查看>>
实习的开始阶段
查看>>
搭建第一个node服务器
查看>>
团队冲刺个人总结8
查看>>
Asp.Net Mvc Area二级域名
查看>>
android:intent flags
查看>>
Vue疑难杂症
查看>>
spring boot 错误处理之深度历险
查看>>
MySQL对于有大量重复数据表的处理方法
查看>>
Android应用开发学习笔记之多线程与Handler消息处理机制
查看>>
ubuntu 设置环境变量
查看>>
jquery之别踩白块游戏的实现
查看>>
索引的分类--B-Tree索引和Hash索引
查看>>
Python学习笔记——参数axis=0,1,2...
查看>>
kivy学习三:打包成window可执行文件
查看>>
兄弟连PHP培训教你提升效率的20个要点
查看>>
【快报】基于K2 BPM的新一代协同办公门户实践交流会
查看>>
关于MySQL的行转列的简单应用
查看>>