Linux SSH免密钥登录

DevOps CentOS评论1,255字数 1930阅读6分26秒阅读模式

原理图

Linux SSH免密钥登录

生成证书

  1. 客户端生成密钥对。
  2. 将公钥信息写入目标服务器、目标账户的配置文件。该操作隐含表示了客户端拥有对目标服务器的控制权。

协商交互过程

  1.  客户端向目标服务器发送登录请求。在SSH 服务启用了证书验证登录方式后,会优先通过证书验证方式进行登录验证。
  2. 目标服务器根据 SSH 服务配置,在用户对应目录及文件中读取到有效的公钥信息。
  3. 目标服务器生成一串随机数,然后使用相应的公钥对其加密。
  4. 目标服务器将加密后的密文发回客户端。
  5. 客户端使用默认目录或 -i 参数指定的私钥尝试解密。
  6. 如果解密失败,则会继续尝试密码验证等其它方式进行登录校验。如果解密成功,则将解密后的原文信息重新发送给目标服务器。意思类似于:“看,这是这段话的原文。我能读懂发过来的密文,我拥有服务器的控制权,请让我登录。”
  7. 目标服务器对客户端返回的信息进行比对。如果比对成功,则表示认证成功,客户端可以登录。如果对比失败,则表示认证失败,则会继续尝试密码验证等其它方式进行登录校验。

Linux 环境下生成密钥对

 

在 Linux 环境下,通常使用系统自带的 ssh-keygen 软件来创建和管理密钥对。请执行如下步骤创建密钥对:

  1. 以任意具有 ssh-keygen 执行权限的用户登录服务器。
  2. 使用如下指令,基于 rsa 算法创建密钥对:
[centos@us-common-sre-jumpserver-2 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/centos/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/centos/.ssh/id_rsa.
Your public key has been saved in /home/centos/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:198DZkmKZADQzAXU8KvjxRAsPPmHMSnbEzK7izjiJvM centos@us-common-sre-jumpserver-2
The key's randomart image is:
+---[RSA 2048]----+
|   .*=*o         |
|  . o+o..        |
|   O B . o   .   |
|    @ * + ..o .  |
|   o * oS....=   |
|    . *  .  o... |
|   . o o      ...|
|*.. o o         .|
|**E. .           |
+----[SHA256]-----+
[centos@us-common-sre-jumpserver-2 ~]$

公钥信息需要写入目标服务器、目标用户的配置文件中,默认配置文件为对应用户家目录下 .ssh 文件夹中的 authorized_keys,

[xiaoxin@iZ2zed99h19kmb7fgbjcghZ ~]$ ssh-copy-id xiaoxin@10.0.0.141

验证免密码登录目标机器

[xiaoxin@iZ2zed99h19kmb7fgbjcghZ ~]$ ssh 10.0.0.141
Last failed login: Fri May 22 10:00:00 CST 2020 from 10.0.0.106 on ssh:notty
There was 1 failed login attempt since the last successful login.

Welcome to Alibaba Cloud Elastic Compute Service !

[xiaoxin@iZ2ze8gn2ubhqjk0vx253pZ ~]$ ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:2c:e4:60 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.141/24 brd 10.0.0.255 scope global dynamic eth0
       valid_lft 315295084sec preferred_lft 315295084sec

继续阅读
DevOps
  • 本文由 发表于 2022年8月29日 13:49:23
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Mac生成SSH Key Mac

Mac生成SSH Key

生成新的秘钥 你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,因为这个Key仅仅用于简单的服务,所以也无需设置密码。 完成后会有如下显示 Enter pa...
Linux上如何将cpu、io、内存打满 CentOS

Linux上如何将cpu、io、内存打满

cpu打满 这个脚本是什么意思呢?这里简单讲解一下。首先是先建一个/tmp/infiniteburn.sh脚本,这个脚本中的内容即为: 如果没有openssl命令,请安装 #!/bin/ba...
DNS可视化 CentOS

DNS可视化

简介 传统的内网dns一般都得大家手动进服务器配置,我相信认识了博主之后,能可视化或自动化配置的,绝不再手动去做了。 系统 [root@instance-7tgaowaa ~]# cat /et...
评论  0  访客  0

发表评论