2019-08-20 ssh远程连接服务

昨日回顾

杀死进程的三种方式

1 .kill 方式
kill pid 进程杀死会有提示信息
2 .killall 方式
killall 进程名 ,进程杀死会有提示信息
3 .pkill 方式
pkill 杀死进程名 ,进程名模糊匹配
特殊用法强制杀死进程 kill -9 pid

远程服务介绍

ssh:端口22 对数据进行加密传输 默认支持root登录
telnet: 端口23 对数据不进行加密 默认不支持root登录

ssh远程登录的原理

ssh建立连接过程.jpg

文字说明
1 .服务端生成公钥和私钥存放在/etc/ssh目录下
2 .客户端TCP三次握手建立连接
3 .客户端请求ssh连接
4 .服务端返回客户端公钥信息
5 .客户端接收确认,并把公钥信息写入~/.ssh/konw_hosts文件中
6 .服务端向客户端询问密码信息
7 .客户端确认密码信息
8 .ssh连接建立

远程服务建立的方式

1.基于密码认证
2 . 基于秘钥认证 公钥和私钥
PS : 秘钥的作用
(1) 对数据进行加密
(2) 对用户进行认证

秘钥连接的过程

ssh秘钥建立过程.png

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 [email protected]
2)密码免交互
[root@m01 ~]# sshpass -p123456 ssh -o StrictHostKeyChecking=no [email protected]
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

你可能感兴趣的:(2019-08-20 ssh远程连接服务)