前言:
现在你们对“linux ssh 公钥”都比较注意,我们都需要知道一些“linux ssh 公钥”的相关知识。那么小编同时在网络上搜集了一些关于“linux ssh 公钥””的相关资讯,希望你们能喜欢,各位老铁们快快来学习一下吧!架构部署(ssh+key)
假设管理服务器的外网地址为10.0.0.61内网为172.16.1.61
在管理服务器上创建密钥对
方案①:利用交互的模式创建密钥对
#ssh-keygen -t dsa
方案②: 利用免交互模式创建秘钥对
a 交互方式位置:需要确认私钥文件保存路径
-f filename Specifies the filename of the key file.
-f "/root/.ssh/id_dsa"
b 交互方式位置:需要进行私钥文件加密确认
-N new_passphrase Provides the new passphrase
-P passphrase Provides the (old) passphrase
实例:
#ssh-keygen -t dsa -f "/root/.ssh/id_dsa" -N ""
这里 -t为type 秘钥类型 -f私钥文件保存路径 -N 密码设置为空,实际要设置密码
加上 -q 取消默认输出 放在脚本里使用
#ssh-keygen -t dsa -f "/root/.ssh/id_dsa" -N "XX" -q
在管理服务器上分发公钥给被管理端服务器利用交互方式分发密钥对
#man ssh-copy-id
ssh-copy-id [-i [identity_file]] [user@]machine
[user@]可不写 默认使用当前登录用户分发。-i 公钥文件路径
命令格式:
#ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.41
#ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31
#ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.8
# ssh-keygen -t dsa -f "/root/.ssh/id_dsa" -N "" -q ——创建一个密钥对密码为空
# ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.41 ——把公钥(锁头)发给被管理端
如上图口令连接完成后输入#ssh 172.16.1.41可直接连接无需输入密码
可以在backup服务器端测试执行看是否与上匹配
利用免交互方式分发秘钥对
a 第一次远程连接有yes/no的确认
ssh -o StrictHostKeyChecking=no --- 取消热键检查功能,不让用户进行确认操作
[root@m01 scripts]# ssh-copy-id -i /root/.ssh/id_dsa.pub "172.16.1.8 -p52113 -o StrictHostKeyChecking=no"
Warning: Permanently added '[172.16.1.8]:52113' (RSA) to the list of known hosts.
b 第一次远程连接需要基于口令认证
sshpass -p 123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "172.16.1.8 -p52113 -o StrictHostKeyChecking=no"
Now try logging into the machine, with "ssh '172.16.1.8 -p52113 -o StrictHostKeyChecking=no'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
#ssh-copy-id -i /root/.ssh/id_dsa.pub "172.16.1.7 -o StricHostKeyChecking=no"
如何实现公钥批量分发,秘钥对自动生成编写脚本实现公钥批量分发
#!/bin/bash
# var info
Password_info=123456
Server_Port=52113
# create key pair
rm /root/.ssh/id_dsa* -f
ssh-keygen -t dsa -f "/root/.ssh/id_dsa" -N "" -q
# push public key to client server
for ip in 7 31 41
do
sshpass -p $Password_info ssh-copy-id -i /root/.ssh/id_dsa.pub "172.16.1.$ip -p$Server_Port -o StrictHostKeyChecking=no"
done
说明:分发的公钥基于两方面:基于IP地址分发 基于用户信息分发
编写批量检查脚本
#!/bin/bash
# var info
Password_info=123456
Server_Port=22
Cmd_info=$1
# push public key to client server
for ip in 7 31 41
do
echo "================= host 172.16.1.$ip check_info ================="
ssh -p$Server_Port 172.16.1.$ip $Cmd_info
echo ""
done
谢谢大家支持——ke.ke
标签: #linux ssh 公钥