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
posted @ 2019-05-22 11:14  权杖攻城狮  阅读(879)  评论(0编辑  收藏  举报