取用户 awk -F”:” ‘/\/bin\/bash$/ {print $1}’ /etc/passwd
一,如何批量分发公钥信息:
ssh 登录免密步骤
实现步骤: 在管理端操作
步骤一: 创建秘钥对
ssh-keygen -t dsa
秘钥存放路径: ~/.ssh/
步骤二: 分发公钥信息
ssh-copy-id -i ~/.ssh/id_dsa.pub root@10.0.0.7
1,影响批量分发数据交互问题:
新分发秘钥主机需要输入确认信息 😣 解决新机器取消确认——>
ssh -o StrictHostKeyChecking=no 主机地址 --- 禁止服务端询问过程 直接默认确认即可
新分发秘钥主机需要输入密码信息 😣 解决推送秘钥需要输入密码——>
对于未连接过的主机。而又不输入yes进行确认,需要进行sshd服务的优化(-p指定端口)<br /> **` yum install -y sshpass`**<br /> 测试: **`sshpass -p123456 ssh 172.16.1.31`**
新分发秘钥主机端口需要需要考虑 😣
ssh-copy-id -i ~/.ssh/id_dsa.pub root@172.16.1.41 -p52113
2,编写脚本信息
vim /server/scripts/distribute_pub_key.sh 管理主机上编写
#!/bin/bash
for ip in 7 31 41
do
sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.$ip -o StrictHostKeyChecking=no &>/dev/null
if [ $? -eq 0 ]
then
echo "host 172.16.1.$ip distribute_pub_key ok."
else
echo "host 172.16.1.$ip distribute_pub_key failed."
fi
done
- 检查脚本
vim /server/scripts/check_pub_key.sh
#!/bin/bash
for ip in 7 31 41
do
ssh root@172.16.1.$ip hostname
done
3,基于sshpass+ssh-copy-id免交互分发公钥到多台服务器项目
需求:1.如果分发秘钥信息时 用户信息不一样 密码信息不一样 端口信息不一样如何批量分发?
| web01 0.7 | oldboy
oldboy123 | 52113 | | —- | —- | —- | | nfs 0.31 | oldgirl
oldgirl123 | 52114 | | backup 0.41 | olddog
olddog123 | 52115 |
cat /scripts/distribute_pub_key.sh
#!/bin/bash
#针对/server/scripts/host_info.txt 每一行进行循环读取
while read line
do
ip_info=$(echo $line|awk '{print $1}')
user_info=$(echo $line|awk '{print $2}')
pass_info=$(echo $line|awk '{print $3}')
port_info=$(echo $line|awk '{print $4}')
sshpass -p$pass_info ssh-copy-id -i ~/.ssh/id_dsa.pub $user_info@$ip_info -o StrictHostKeyChecking=no -p$port_info &>/dev/null
if [ $? -eq 0 ]
then
echo "host $ip_info distribute_pub_key ok."
else
echo "host $ip_info distribute_pub_key failed."
fi
done < /server/scripts/host_info.txt
cat /scripts/info.txt
172.16.1.7 oldboy oldboy123 52113
172.16.1.31 oldgirl oldgirl123 52114
172.16.1.41 olddog olddog123 52115
需求:2. 如何有三台主机 如何实现基于秘钥方式互相访问
如何有三台主机 如何实现基于秘钥方式互相访问
backup nfs web01
backup —-免密连接—-> nfs
管理端 被管理端
秘钥对 匹配公钥
第一个里程: 所有主机都需要创建秘钥对
ssh-keygen -t dsa
第二个里程: 分发公钥信息 一个比较全公钥文件信息
本地主机给自己分发公钥
ssh-copy-id -i ~/.ssh/id_dsa.pub root@172.16.1.7
ssh-copy-id -i ~/.ssh/id_dsa.pub root@172.16.1.31
ssh-copy-id -i ~/.ssh/id_dsa.pub root@172.16.1.41
第三个里程: 将整合公钥文件进行分发
scp -rp ~/.ssh/authorized_keys 172.16.1.7:/root/.ssh/
scp -rp ~/.ssh/authorized_keys 172.16.1.31:/root/.ssh/
scp -rp ~/.ssh/authorized_keys 172.16.1.41:/root/.ssh/
ssh 安全问题:
https://blog.csdn.net/youmatterhsp/article/details/84110812
入侵防范说明:
1.所有连接尽量使用基于秘钥的方式连接。 windows中如何使用秘钥连接?
2.防火墙策略
尽量使用白名单的方式,
控制SSH外网建立,只能使用ssh 连接(可以监控一下自己的ssh 配置文件的 MD5sun ,上锁 chattr)
二,远程服务配置文件信息
Port 22 —- 修改默认服务端口号码 ListenAddress 0.0.0.0 —- 指定服务监听网卡地址信息 默认监听所有网卡地址 PS: 监听参数设置地址, 一定是本地网卡上配置的地址
netstat -lntup|grep sshd
tcp 0 0 10.0.0.7:22 0.0.0.0: LISTEN 18646/sshd HostKey xxxx —- 默认ssh连接时,使用秘钥文件信息 PermitRootLogin yes —- 是否允许root用户远程登录 AuthorizedKeysFile —- 识别分发后的公钥文件信息 PasswordAuthentication —- 是否允许支持密码方式进行认证登录 PermitEmptyPasswords —- 是否允许空密码登录主机 GSSAPIAuthentication —- GSSAPI认证登录方式 如果开启会影响SSH连接效率 UseDNS no —- 是否开启SSH服务反向解析过程 提高SSH连接效率
*三,入侵防范方法说明
- 所有服务端主机不要使用密码登录 都使用基于秘钥方式
- 配置防火墙策略时, 尽量采用白名单方式配置 控制SSH外网建立 只能SSH连接 对主机SSH服务进行监听设置
- 重要服务器不要配置外网地址
- 架构中服务器最小化环境安装配置
- 系统重要文件进行指纹保存验证
- 给系统重要文件进行上锁 chattr
- 远程服务操作命令信息 ssh-keygen —- ssh服务创建秘钥对命令 -t -N 给秘钥文件设置密码 -f 指定文件保存路径 ssh-keygen -t dsa -N “” -f /root/.ssh/id_dsa —- 免交互创建秘钥对 /usr/bin/scp —- 远程传输数据 -rp /usr/bin/sftp —- 远程文件传输 ftp网络协议 get put /usr/bin/slogin —- 和ssh命令类似实现远程功能 /usr/bin/ssh —- 和ssh命令类似实现远程功能 /usr/bin/ssh-add —- ??? /usr/bin/ssh-agent —- ??? /usr/bin/ssh-copy-id —- 实现分发公钥信息 /usr/bin/ssh-keyscan —- ??? /usr/sbin/sshd —- 启动SSH服务程序