SSH无密码(密钥验证)登录的配置
1、ssh-keygen
1)ssh-keygen命令简介
ssh-keygen 是 OpenSSH 身份验证密钥实用工具。
ssh-keygen 用于 OpenSSH 身份验证密钥的生成、管理和转换,它支持 RSA 和 DSA 两种认证密钥
2)ssh-keygen命令格式
ssh-keygen [OPTIONS] FILE...
选项说明:
点击查看代码
-b BITS
指定密钥长度。
-e
读取私有或公共 OpenSSH 密钥文件并以 -m 选项指定的格式之一将密钥打印到标准输出。
-C
添加注释。
-f FILENAME
指定用来保存密钥的文件名。
-i
以 -m 选项指定的格式读取未加密的私钥(或公钥)文件,并将 OpenSSH 兼容的私钥(或公钥)打印到 stdout。
-l
显示公钥文件的指纹数据。
-m KEY_FORMAT
为 -i(导入)或 -e(导出)转换选项指定密钥格式。支持的密钥格式为:“RFC4716”(RFC 4716/SSH2 公钥或私钥)、“PKCS8”(PEM PKCS8 公钥)或“PEM”(PEM 公钥)。 默认转换格式为“RFC4716”。
-N
提供一个新密语。
-P PASSPHRASE
提供(旧)密语。
-q
静默模式。
-t
指定要创建的密钥类型。可能的值为“dsa”、“ecdsa”、“ecdsa-sk”、“ed25519”、“ed25519-sk”或“rsa”。
-y
从 OpenSSH 格式的私钥导出公钥。
3)ssh-keygen示例
(1)ssh-keygen -t rsa
(或者直接使用ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
)进入到我的home目录 cd ~/.ssh
[root@shtppATTSTPUBv03 home]# cd ~/.ssh
[root@shtppATTSTPUBv03 .ssh]# pwd
/root/.ssh
ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
[root@shtppATTSTPUBv03 .ssh]# ll
total 16
-rw------- 1 root root 403 May 20 15:55 authorized_keys
-rw------- 1 root root 1675 May 20 15:56 id_rsa
-rw-r--r-- 1 root root 403 May 20 15:56 id_rsa.pub
-rw-r--r-- 1 root root 1085 May 20 16:32 known_hosts
[root@shtppATTSTPUBv03 .ssh]#
(2)将公钥拷贝到要免登陆的机器上: ssh-copy-id user@localhost
实际上就是将A(客户端)机器上的公钥/home/publisher/.ssh/id_rsa.pub复制到B(服务端)机器上的/home/weblogic/.ssh/authorized_keys里面。
然后再A上面免密登陆B。
⚠️known_hosts 文件每行记录一个连接过的远程服务器的公钥。
⚠️如果当前主机是 SSH 服务端,那么会有 authorized_keys,用来存放客户端机器的公钥。
2、自动分发公钥
sshpass的定义:ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。
⚠️注
- 一键自动创建和分发公钥
#!/bin/bash
ip_list="192.168.44.135"
echo '创建key,如果已存在,可忽略'
ssh-keygen -f ~/.ssh/id_rsa -P ''
echo '分发key'
for ip in $ip_list
do
sshpass -pxroot ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no root@$ip
done
- 检测
#!/bin/bash
ip_list="192.168.44.135"
for ip in $ip_list
do
ssh root@$ip $@
done
如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨小小打赏一下吧,如果囊中羞涩,不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.