龙空技术网

Linux ssh+key(创建密钥公钥)

King代号K 522

前言:

现在你们对“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 密码设置为空,实际要设置密码

ssh-keygen -t dsa -f "/root/.ssh/id dsa" -N ”XX“

加上 -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服务器端测试执行看是否与上匹配

证明是ssh可以利用密钥对的建立直接来查看远端主机的信息

利用免交互方式分发秘钥对

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 -o StrictHostKeyChecking=no

#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 公钥