Linux ssh免密(附脚本免密)

1、生成秘钥

执行以下命令,再连续三个回车

ssh-keygen

生成秘钥的结果
在这里插入图片描述
查看.ssh目录下文件

ll .ssh 

在这里插入图片描述

2、将本地公钥复制到远程主机

#centos6 生成认证信息(authorized_keys)
ssh-copy-id -i ~/.ssh/id_rsa  'leopard01' -p4001
ssh-copy-id -i ~/.ssh/id_rsa  'leopard02' -p4001
ssh-copy-id -i ~/.ssh/id_rsa  'leopard03' -p4001
#centos7 生成认证信息(authorized_keys)
ssh-copy-id elsearch@leopard01 -p 4001
ssh-copy-id elsearch@leopard02 -p 4001
ssh-copy-id elsearch@leopard03 -p 4001

3、脚本执行免密

需要先安装expect

yum install expect

修改下面脚本passwd_array和host_array 创建文件do_ssh.sh 之后执行这个sh

#!/bin/bash
# 
#********************************************************************
#Author:              dong
#Date:         
#FileName:         myshh.sh
#Description:    
#Copyright (C):  
#********************************************************************
# 1、生成秘钥
expect <<EOF
spawn ssh-keygen
expect {
  "/home/elsearch/.ssh/id_rsa" {send "\n";exp_continue}
  "empty for no passphrase" {send "\n";exp_continue}
  "Enter same passphrase again" {send "\n";}
}
expect eof
EOF
# 2、休眠五秒确保所有机器都生成秘钥后,再执行第3步
sleep 5
# 3、ssh-copy-id 将本地公钥复制到远程主机
passwd_array=("11111111" "11111111" "11111111")
host_array=("leopard01" "leopard02" "leopard03")
for i in "${!passwd_array[@]}"; do
{
expect <<EOF
spawn ssh-copy-id elsearch@${host_array[$i]} -p 45685
expect {
  "yes/no" { send "yes\n";exp_continue }
  "password" { send "${passwd_array[$i]}\n" }
}
expect eof
EOF
}
done

ssh-keygen 具体参数说明

-A 对于不存在主机密钥的每种密钥类型(rsa、dsa、ecdsa 和 ed25519),生成具有默认密钥文件路径、空密码、密钥类型的默认位和默认注释的主机密钥。如果还指定了 -f,则其参数用作生成的主机密钥文件的默认路径的前缀。系统管理脚本使用它来生成新的主机密钥。

-a rounds 保存私钥时,此选项指定使用的 KDF(密钥派生函数,当前为 bcrypt_pbkdf(3))轮数。较高的数字会导致密码验证速度变慢,并增加对暴力密码破解的抵抗力(如果密钥被盗)。默认值为 16 轮。

-B 显示指定私钥或公钥文件的泡泡摘要。

-b bits 指定要创建的密钥的位数。对于 RSA 密钥,最小大小为 1024 位,默认为 3072 位。一般认为 3072 位就足够了。 DSA 密钥必须是 FIPS 186-2 指定的 1024 位。对于 ECDSA 密钥,-b 标志通过从以下三种椭圆曲线大小之一中选择来确定密钥长度:256、384 或 521 位。尝试对 ECDSA 密钥使用这三个值以外的位长度将失败。 ECDSA-SK、Ed25519 和 Ed25519-SK 密钥具有固定长度,并且 -b 标志将被忽略。

-C 注释 提供新注释。

-c 请求更改私钥和公钥文件中的注释。程序将提示输入包含私钥的文件,如果密钥有密码,则提示输入密码,以及新的评论。

-D pkcs11 下载 PKCS#11 共享库 pkcs11 提供的公钥。当与 -s 结合使用时,此选项表示 CA 密钥驻留在 PKCS#11 令牌中(有关详细信息,请参阅证书部分)。

-E 指纹哈希 指定显示密钥指纹时使用的哈希算法。有效选项为:“md5”和“sha256”。默认值为“sha256”。

-e 此选项将读取私有或公共 OpenSSH 密钥文件并以 -m 选项指定的格式之一将公共密钥打印到标准输出。默认导出格式为“RFC4716”。此选项允许导出 OpenSSH 密钥以供其他程序使用,包括几个商业 SSH 实现。

-F 主机名 | [hostname]:port 在 known_hosts 文件中搜索指定的主机名(带有可选端口号),列出找到的所有匹配项。此选项对于查找散列主机名或地址很有用,也可以与 -H 选项结合使用,以散列格式打印找到的键。

-f 文件名 指定密钥文件的文件名。

-g 使用 -r 命令打印指纹资源记录时使用通用 DNS 格式。

-H 散列 known_hosts 文件。这将使用指定文件中的散列表示替换所有主机名和地址;原始内容被移动到带有 .old 后缀的文件中。 ssh 和 sshd 可以正常使用这些哈希值,但如果文件的内容被泄露,它们不会泄露识别信息。此选项不会修改现有的散列主机名,因此可以安全地用于混合散列和非散列名称的文件。

-h 签署密钥时,创建主机证书而不是用户证书。
-I 证书身份
签署公钥时指定密钥身份。

-i 该选项将读取 -m 选项指定格式的未加密私有(或公共)密钥文件,并将 OpenSSH 兼容的私有(或公共)密钥打印到标准输出。此选项允许从其他软件导入密钥,包括几个商业 SSH 实现。默认导入格式为“RFC4716”。

-K 从 FIDO 身份验证器下载常驻密钥。对于每个下载的密钥,公钥和私钥文件将写入当前目录。如​​果附加了多个 FIDO 验证器,将从第一个接触的验证器下载密钥。

-k 生成一个 KRL 文件。在这种模式下,ssh-keygen 将在通过 -f 标志指定的位置生成一个 KRL 文件,该文件会撤销命令行上提供的每个密钥或证书。要撤销的密钥/证书可以由公钥文件指定。

-L 打印一个或多个证书的内容。

-l 显示指定公钥文件的指纹。对于 RSA 和 DSA 密钥,ssh-keygen 尝试找到匹配的公钥文件并打印其指纹。如果与 -v 结合使用,则密钥的视觉 ASCII 艺术表示将与指纹一起提供。

-M 生成
生成候选 Diffie-Hellman 组交换 (DH-GEX) 参数,以供“diffie-hellman-group-exchange-*”密钥交换方法最终使用。此操作产生的数字在使用前必须进一步筛选。

-M 屏幕
筛选 Diffie-Hellman Group Exchange 的候选参数。这将接受候选数字列表,并使用可接受的组生成器测试它们是否是安全的(Sophie Germain)素数。此操作的结果可能会添加到 /etc/ssh/moduli 文件中。

-m 密钥格式
指定密钥生成的密钥格式、-i(导入)、-e(导出)转换选项和 -p 更改密码短语操作。后者可用于在 OpenSSH 私钥和 PEM 私钥格式之间进行转换。支持的密钥格式有:
“RFC4716”(RFC 4716/SSH2 公钥或私钥)、“PKCS8”(PKCS8 公钥或私钥)或“PEM”(PEM 公钥)。默认情况下,OpenSSH 将以自己的格式写入新生成的私钥,但在转换公钥以进行导出时,默认格式为“RFC4716”。在生成或更新支持的私钥类型时设置“PEM”格式将导致密钥以旧 PEM 私钥格式存储。

-N new_passphrase
提供新密码。

-n 主体
指定签名密钥时要包含在证书中的一个或多个主体(用户名或主机名)。可以指定多个主体,用逗号分隔。

-P 密码
提供(旧)密码。

-p 请求更改私钥文件的密码,而不是创建新的私钥。程序将提示输入包含私钥的文件,输入旧密码,两次输入新密码。

-Q 测试 KRL 中的密钥是否已被撤销。如果还指定了 -l 选项,则将打印 KRL 的内容。

-q 沉默 ssh-keygen。

-R 主机名 | [hostname]:port 从 known_hosts 文件中删除属于指定主机名(带有可选端口号)的所有键。此选项对于删除散列主机很有用(请参阅上面的 -H 选项)。

-r 主机名
打印指定公钥文件的名为 hostname 的 SSHFP 指纹资源记录。

-s ca_key
使用指定的 CA 密钥验证(签名)公钥。生成 KRL 时,-s 指定用于通过密钥 ID 或序列号直接撤销证书的 CA 公钥文件的路径。

-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | RSA
指定要创建的密钥类型。可能的值为“dsa”、“ecdsa”、“ecdsa-sk”、“ed25519”、“ed25519-sk”或“rsa”。
当使用 RSA CA 密钥签署证书时,此标志还可用于指定所需的签名类型。可用的 RSA 签名变体是“ssh-rsa”(SHA1 签名,不推荐)、“rsa-sha2-256”和“rsa-sha2-512”(默认值)。

-U 当与 -s 结合使用时,此选项表示 CA 密钥驻留在 ssh-agent 中。

-u 更新 KRL。当使用 -k 指定时,通过命令行列出的键被添加到现有的 KRL,而不是创建新的 KRL。

-V 有效性间隔
签署证书时指定有效期。有效性间隔可以由单个时间组成,表明证书从现在开始有效并在那时到期,或者可以由用冒号分隔的两个时间组成,以指示明确的时间间隔。
开始时间可以指定为字符串“always”以指示证书没有指定的开始时间、YYYYMMDD 格式的日期、YYYYMMDDHHMM[SS] 格式的时间、由减号组成的相对时间(相对于当前时间)符号后跟一个间隔,格式在 sshd_config(5) 的 TIME FORMATS 部分中描述。

结束时间可以指定为 YYYYMMDD 日期、YYYYMMDDHHMM[SS] 时间、以加号字符或字符串“forever”开头的相对时间,以指示证书没有到期日期。
例如:“+52w1d”(从现在到 52 周和 1 天后有效)、“-4w:+4w”(从 4 周前到 4 周后有效)、“20100101123000:20110101123000”(从 12 :30 PM,2010 年 1 月 1 日至 12:30 PM,2011 年 1 月 1 日),“-1d:20110101”(从昨天到 2011 年 1 月 1 日午夜有效),“-1m:forever”(从一分钟开始有效以前并且永不过期)。

-v 详细模式。使 ssh-keygen 打印有关其进度的调试消息。这有助于调试模数生成。多个 -v 选项会增加详细程度。最大值为 3。

-w 提供者
指定在创建 FIDO 身份验证器托管密钥时将使用的库路径,覆盖使用内部 USB HID 支持的默认设置。

-y 此选项将读取私有 OpenSSH 格式文件并将 OpenSSH 公钥打印到标准输出。

-Z 密码
指定在编写 OpenSSH 格式的私钥文件时用于加密的密码。可以使用“ssh -Q cipher”获取可用密码列表。默认为“aes256-ctr”。

-z 序列号
指定要嵌入证书中的序列号,以将此证书与来自同一 CA 的其他证书区分开来。如果序列号以“+”字符为前缀,则序列号将为在单个命令行上签名的每个证书递增。默认序列号为零。生成 KRL 时,-z 标志用于指定 KRL 版本号。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值