昨日回顾
杀死进程的三种方式
1 .kill 方式
kill pid 进程杀死会有提示信息
2 .killall 方式
killall 进程名 ,进程杀死会有提示信息
3 .pkill 方式
pkill 杀死进程名 ,进程名模糊匹配
特殊用法强制杀死进程 kill -9 pid
远程服务介绍
ssh:端口22 对数据进行加密传输 默认支持root登录
telnet: 端口23 对数据不进行加密 默认不支持root登录
ssh远程登录的原理
文字说明
1 .服务端生成公钥和私钥存放在/etc/ssh目录下
2 .客户端TCP三次握手建立连接
3 .客户端请求ssh连接
4 .服务端返回客户端公钥信息
5 .客户端接收确认,并把公钥信息写入~/.ssh/konw_hosts文件中
6 .服务端向客户端询问密码信息
7 .客户端确认密码信息
8 .ssh连接建立
远程服务建立的方式
1.基于密码认证
2 . 基于秘钥认证 公钥和私钥
PS : 秘钥的作用
(1) 对数据进行加密
(2) 对用户进行认证
秘钥连接的过程
1 . 管理端生成秘钥
2 .管理端将公钥传递给被管理端的~/.ssh/authorized下
3 .被管理端发送公钥质询
4 .管理端响应认公钥质询
5 .建立连接
秘钥对建立命令
[root@m01 ~]# ssh-keygen -t dsa
[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31 #172.16.1.31是被管理端
[root@m01 ~]# ssh 172.16.1.31 hostname
nfs01
免交互式分发公钥
1 .ssh-copy-id 分发公钥的原理
(1) ssh与远程服务器建立连接
(2) 将本地公钥信息传递到远程服务器上
(3) 远程服务器将公钥信息保存到~/.ssh/authorized中
1) ssh远程连接免交互
[root@m01 ~]# ssh -o StrictHostKeyChecking=no root@172.16.1.31
2)密码免交互
[root@m01 ~]# sshpass -p123456 ssh -o StrictHostKeyChecking=no root@172.16.1.31
3)公钥免交互式分发
[root@m01 ~]# sshpass -p123456 ssh-copy-id 172.16.1.31 -o StrictHostKeyChecking=no
4)测试连接
[root@m01 ~]# ssh 172.16.1.31 hostname
nfs01
脚本方式免交互式分发公钥
免交互批量分发公钥脚本
[root@m01 ~]# cat /server/scripts/distribute_key.sh
#!/bin/bash
. /etc/init.d/functions
# 创建秘钥对
if [ ! -f /root/.ssh/id_dsa ]
then
ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" >/dev/null
action "key pair create" /bin/true
else
action "key pair already exists" /bin/false
fi
# 分发公钥信息
for ip in 7 31 41
do
sshpass -p654321 ssh-copy-id -i ~/.ssh/id_dsa.pub 172.16.1.$ip -o StrictHostKeyChecking=no &>/dev/null
if [ $? -eq 0 ]
then
action "host 172.16.1.$ip pub_key distribute" /bin/true
echo ""
else
action "host 172.16.1.$ip pub_key distribute" /bin/false
echo ""
fi
done
免交互式测试连接
免交互批量检查公钥脚本
[root@m01 ~]# cat /server/scripts/check_key.sh
#!/bin/bash
. /etc/init.d/functions
# 检查公钥信息
for ip in 7 31 41
do
ssh 172.16.1.$ip hostname &>/dev/null
if [ $? -eq 0 ]
then
action "host 172.16.1.$ip connect" /bin/true
echo ""
else
action "host 172.16.1.$ip connect" /bin/false
echo ""
fi
done