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

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

一、环境准备

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"后缀后保存。这些散列值只能被 ssh 和 sshd 使用。 这个选项不会修改已经经过散列的主机名/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|-?: 显示帮助 |

相关推荐
用户962377954484 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机7 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机8 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954489 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star9 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544812 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
chlk1231 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑1 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件2 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号2 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移