1 SSH免密码登陆部署方式
第一个步骤: 在客户端创建密钥对信息(管理主机10.0.0.61)
[root@m01 ~]# ssh-keygen -t dsa
[root@m01 ~]# ll ~/.ssh/
total 8
-rw------- 1 root root 668 Mar 4 10:36 id_dsa
-rw-r--r-- 1 root root 598 Mar 4 10:36 id_dsa.pub
第二步: 分发公钥信息
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub root@172.16.1.31
2. 如何编写SSH配置文件
vim /etc/ssh/sshd_config
#Port 22 --- 修改服务端口号参数
#ListenAddress 0.0.0.0 --- 修改监听地址(指定的监听地址可以建立连接)
0.0.0.0监听本地主机网卡有的所有地址, 建议只监听内网网卡地址
!!!PS: 服务只能监听本地网卡上有的地址
#PermitEmptyPasswords no --- 是否允许空密码登陆连接,默认不允许
#PermitRootLogin yes --- 是否允许root用户远程登陆,默认允许
连接优化:GSSAPIAuthentication on --- 特殊的认证需要关闭(提升远程连接效率)
#UseDNS on --- 开启了代表具有DNS反向解析功能
DNS正向解析: 已知域名信息 --- IP地址信息
DNS反向解析: 已知IP信息 --- 获得域名信息
(需要以来hosts文件配置,如果文件没有配置,反向解析过程会影响远程连接效率)
07. 如何批量分发公钥/如何实现批量验证
问题一: 如何批量分发公钥 基于脚本循环
利用脚本循环操作
mkdir /server/scripts -p
vim fenfa.sh --- 初始分发公钥脚本
#!/bin/bash
for ip in `cat /server/scripts/ip_list.txt`
do
ssh-copy-id -i /root/.ssh/id_dsa.pub root@$ip
done
问题一: 分发时需要输入密码信息
需要安装:yum install -y sshpass
sshpass -p123456 ssh-copy-id -i ~/.ssh/id_dsa.pub root@172.16.1.31
问题二: 需要进行确认
>~/.ssh/known_hosts 为了实现确认效果,需要清楚客户端known_hosts文件
sshpass -p123456 ssh-copy-id -i ~/.ssh/id_dsa.pub root@172.16.1.31 -o StrictHostKeyChecking=no
完善脚本信息:
[root@m01 scripts]# cat fenfa_pub.sh
#!/bin/bash
source /etc/init.d/functions
for ip in `cat /server/scripts/ip_list.txt`
do
echo "================ start fenfa to $ip =================="
sshpass -p123456 ssh-copy-id -i ~/.ssh/id_dsa.pub root@$ip -o StrictHostKeyChecking=no &>/dev/null
if [ $? -ne 0 ]
then
action "host $ip fenfa fail !" /bin/false
else
action "host $ip fenfa success !" /bin/true
fi
echo "================ end fenfa =================="
echo ""
done
分发测试检查脚本:
#!/bin/bash
source /etc/init.d/functions
for ip in `cat /server/scripts/ip_list.txt`
do
echo "================ start check to $ip =================="
ssh root@$ip $1
if [ $? -ne 0 ]
then
action "host $ip check fail !" /bin/false
else
action "host $ip check success !" /bin/true
fi
echo ""
done
完善:
[root@m01 scripts]# vim fenfa_check.sh
#!/bin/bash
source /etc/init.d/functions
if [ $# -ne 1 ]
then
echo "pls input one commond"
exit
fi
for ip in `cat /server/scripts/ip_list.txt`
do
echo "================ start check to $ip =================="
ssh root@$ip $1
if [ $? -ne 0 ]
then
action "host $ip check fail !" /bin/false
else
action "host $ip check success !" /bin/true
fi
echo ""
done
sh fenfa_check.sh hostname
问题二: 如何SSH服务端口号变更如何进行分发 基于特殊参数
ssh-copy-id -i ~/.ssh/id_dsa.pub root@172.16.1.31 -p52113