Linux安全之SSH密钥创建及密钥登陆

ops/2024/12/21 10:46:45/

主机一对秘钥实现一对多和多对一免密登陆

一、环境准备

       1、 虚拟机A (登陆端) :192.168.0.10

       2、 虚拟机B(被登陆端):192.168.0.20

       3、 虚拟机C (被登陆端)  :192.168.0.30

       4、 Windows 主机 Xshell 工具

二、实现的功能

       1、 Xshell 工具密钥 连接虚拟机 A

       1、虚拟机A免密登陆到虚拟机B拷贝文件

三、在虚拟机A上创建秘钥文件夹

1、新建秘钥按照如下路径使用 mkdir 创建文件夹:

root用户密钥     /root/.ssh

普通用户(nonagon)秘钥    /home/nonagon/.ssh

2、创建完成后使用  ls -a  命令查看是否创建成功

四、在虚拟机A上执行以下操作

1、使用 cd  命令进入新建的文件夹,执行ssh-keygen命令创建密钥对

cd /home/nonagon/.ssh
ssh-keygen -t rsa -C "备注" -b 4096
##再执行回车,连点三次

注意:备注填写”当前主机名+ip“,这样做的目的是,当被登录主机有多个公钥,可以通过备注识别是哪台主机的公钥

说明: -b 代表秘钥长度,可以省略成 ssh-keygen -t rsa

4、秘钥生成后,会在 /.ssh文件夹中生成两个文件,

      id_rsa             是私钥  (用于外部工具通过ssh登陆服务器)

      id_rsa.pub      是公钥  (用于登陆到其他被登陆服务器)

5、将A机器的公钥文件传出给B机器

##35000为远程登录端口号,如果使用默认的22端口需要删掉-p 35000
ssh-copy-id planck@192.168.0.20 -p 35000

 此刻A登陆B已完成

6、将A机器的公钥文件传给C机器

##35000为远程登录端口号,如果使用默认的22端口需要删掉-p 35000
ssh-copy-id planck@192.168.0.30 -p 35000

此刻A登陆C已完成

7.验证是否成功

方法一:通过下方的ssh指令,如果不需要输入密码就能登录则代表成功了

ssh  planck@192.168.0.20

方法2,进入到被登录的机器中,执行下方指令,查看是否有我们刚发生的公钥即可

cat /root/.ssh/authorized_keys 

五、多机免密登陆一台设备

  A机器和B机器实现免密登陆C

   在B机器上重复A机器的生成秘钥操作(第三和第四步操作),然后将B机器的公钥文件传给C机器

主机使用多对秘钥分别免密登陆不同设备

生成多个密钥时需要使用 -f 指定密钥名称

ssh-keygen -t rsa -C "被连接主机的备注" -f ~/.ssh/hostB_id_rsa
ssh-keygen -t rsa -C "被连接主机的备注" -f ~/.ssh/hostC_id_rsa

需要控制N台机器,此时你会生成多对密钥),则需要使用参数-i指定私钥文件

# ssh root@172.24.253.2 -i /path/to/your_id_rsa

scp也是一样,如:

scp -i /root/.ssh/id_rsa  ./xxx 192.168.102.158:/home/wwy/bak

因为默认情况下ssh命令会使用~/.ssh/id_rsa作为私钥文件进行登录,如果需要连接多台服务器而又不希望每次使用ssh命令时指定私钥文件,可以在ssh的客户端全局配置文件/etc/ssh/ssh_config(或本地配置文件~/.ssh/config, 如果该文件不存在则建立一份)中增加如下配置

IdentityFile /path/to/your_id_rsa.

也可以为每个服务器指定一个Host配置:

Host 172.24.253.2

ssh-keygen可用的参数选项有:-a trials在使用 -T 对 DH-GEX 候选素数进行安全筛选时需要执行的基本测试数量。-B      显示指定的公钥/私钥文件的 bubblebabble 摘要。-b bits指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。-C comment提供一个新注释-c      要求修改私钥和公钥文件中的注释。本选项只支持 RSA1 密钥。程序将提示输入私钥文件名、密语(如果存在)、新注释。-D reader下载存储在智能卡 reader 里的 RSA 公钥。-e      读取OpenSSH的私钥或公钥文件,并以 RFC 4716 SSH 公钥文件格式在 stdout 上显示出来。该选项能够为多种商业版本的 SSH 输出密钥。-F hostname在 known_hosts 文件中搜索指定的 hostname ,并列出所有的匹配项。这个选项主要用于查找散列过的主机名/ip地址,还可以和 -H 选项联用打印找到的公钥的散列值。-f filename指定密钥文件名。-G output_file为 DH-GEX 产生候选素数。这些素数必须在使用之前使用 -T 选项进行安全筛选。-g      在使用 -r 打印指纹资源记录的时候使用通用的 DNS 格式。-H      对 known_hosts 文件进行散列计算。这将把文件中的所有主机名/ip地址替换为相应的散列值。原来文件的内容将会添加一个".old"后缀后保存。这些散列值只能被 sshsshd 使用。这个选项不会修改已经经过散列的主机名/ip地址,因此可以在部分公钥已经散列过的文件上安全使用。-i      读取未加密的SSH-2兼容的私钥/公钥文件,然后在 stdout 显示OpenSSH兼容的私钥/公钥。该选项主要用于从多种商业版本的SSH中导入密钥。-l      显示公钥文件的指纹数据。它也支持 RSA1 的私钥。对于RSA和DSA密钥,将会寻找对应的公钥文件,然后显示其指纹数据。-M memory指定在生成 DH-GEXS 候选素数的时候最大内存用量(MB)。-N new_passphrase提供一个新的密语。-P passphrase提供(旧)密语。-p      要求改变某私钥文件的密语而不重建私钥。程序将提示输入私钥文件名、原来的密语、以及两次输入新密语。-q      安静模式。用于在 /etc/rc 中创建新密钥的时候。-R hostname从 known_hosts 文件中删除所有属于 hostname 的密钥。这个选项主要用于删除经过散列的主机(参见 -H 选项)的密钥。-r hostname打印名为 hostname 的公钥文件的 SSHFP 指纹资源记录。-S start指定在生成 DH-GEX 候选模数时的起始点(16进制)。-T output_file测试 Diffie-Hellman group exchange 候选素数(由 -G 选项生成)的安全性。-t type指定要创建的密钥类型。可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2)-U reader把现存的RSA私钥上传到智能卡 reader-v      详细模式。ssh-keygen 将会输出处理过程的详细调试信息。常用于调试模数的产生过程。重复使用多个 -v 选项将会增加信息的详细程度(最大3次)。-W generator指定在为 DH-GEX 测试候选模数时想要使用的 generator-y      读取OpenSSH专有格式的公钥文件,并将OpenSSH公钥显示在 stdout 上。

ssh-copy-id的参数有:-i #指定密钥文件-p #指定端口,默认端口号是22-o <ssh -o options>user@]hostname #用户名@主机名-f: force mode -- copy keys without trying to check if they are already installed-n: dry run    -- no keys are actually copied-h|-?: 显示帮助


http://www.ppmy.cn/ops/143736.html

相关文章

前端跨越方式有哪些

发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 前端跨域&#xff08;Cross-Origin Resource Sharing&#xff0c;CORS&#xff09;是指在不同源&#xff08;protocol、domain、…

Excel加载项入门:原理、安装卸载流程与常见问题

1.什么是Excel加载项&#xff1f; Excel加载项是一种定制化的软件组件&#xff0c;它们被设计用来增强和扩展Microsoft Excel的功能。这些加载项以.xll文件的形式存在&#xff0c;并能够被加载到Excel应用程序中&#xff0c;赋予用户额外的功能和工具。 加载项的原理 Excel加…

第5章:基于EfficientNet 网络实现的图像分类任务:104种花种类识别

目录 1. EfficientNet 2. EfficientNet 实现的花分类 2.1 花数据集 2.2 训练脚本 2.3 训练结果 2.4 推理 3. 下载 1. EfficientNet EfficientNet是一种卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;由谷歌的研究人员于2019年推出。它以高效利用计算资源而闻…

Git核心概念总结

版本控制 什么是版本控制 版本控制是一种记录一个或若干文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。 除了项目源代码&#xff0c;你可以对任何类型的文件进行版本控制。 为什么要版本控制 有了它你就可以将某个文件回溯到之前的状态&#xff0c;甚至将整…

如何更好的对WebSocket的理解?应用场景?

WebSocket 简介 WebSocket 是一种通信协议,它提供了全双工、低延迟、持久化的网络通信。与传统的 HTTP 协议不同,WebSocket 允许客户端和服务器之间建立一个持续的连接,双方可以在这个连接上双向发送数据,而不需要每次交互时都建立新的连接。 WebSocket 协议在 HTTP 协议…

专业125+总分400+南京理工大学818考研经验南理工电子信息与通信工程,真题,大纲,参考书。

考研成功上岸&#xff0c;苦尽甘来&#xff0c;专业818信号系统与数字电路125&#xff0c;总分400&#xff0c;被南理工录取&#xff0c;从最早信心满满&#xff0c;到中期犹豫不决&#xff0c;到后期破釜沉舟&#xff0c;一路颠颠簸簸&#xff0c;总算坚持过来了&#xff0c;群…

barin.js(十五)FeedForward实战教程 - 手写数字识别(MNIST 数据集)

系列文章&#xff1a; &#xff08;一&#xff09;&#xff1a;brain.js概要介绍&#xff08;二&#xff09;&#xff1a;项目集成方式&#xff08;三&#xff09;&#xff1a;手把手教你配置和训练神经网络&#xff08;四&#xff09;&#xff1a;利用异步训练和交叉验证来优…

功能篇:springboot实现pdf加水印,5种方案

在Spring Boot应用中实现给PDF文件加水印&#xff0c;可以采用以下五种方案&#xff1a; ### 方案一&#xff1a;使用iText库 iText 是一个强大的Java PDF库&#xff0c;可以用来创建、修改和操作PDF文档。你可以使用它来添加文本或图像形式的水印。 **步骤&#xff1a;** 1. …