欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > Linux安全之SSH密钥创建及密钥登陆

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

2024/12/21 23:50:06 来源:https://blog.csdn.net/nonagontech/article/details/144516648  浏览:    关键词: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|-?: 显示帮助

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com