工作生活

week11-远程连接服务SSH

2019-07-03  本文已影响0人  刘Huai

SSH (Secure Shell Protocol),在传输数据之前,SSH 先对联机数据包通过加密技术进行加密处理,加密后进行加密传输,确保了传递的数据安全

1. SSH与Telnet的区别
服务连接方式 服务数据传输 服务监听端口 服务登陆用户
SSH 加密 22/tcp 默认支持root用户登陆
Telnet 明文 23/tcp 不支持root用户登陆

第一步 客户端向服务端发送请求连接 ( 远程谁,谁就是服务端,谁远程谁就是客户端)
第二步 服务端向客户端发给送公钥 公钥存放在 服务端 etc/ssh/ .pub 文件就是公钥文件
第三步 客户端输入yes进行确认
第四步 服务端询问客户端密码信息,
第五步 客户端输入密码
第六步 服务端确认密码正确,连接建立 服务端通过etc/shadow 文件中对比加密密码,确认没有问题,建立连接

基于密码(口令)方式 安全性不高
基于密钥方式 为批量管理服务器(ansible),准备环境 免交互远程连接

  1. 管理端 发送连接请求
  2. 被管理端 基于口令进行验证
  3. 管理端 创建密钥对,并发送公钥信息
  4. 管理端 发送连接请求
  5. 被管理端 发送公钥质询信息
  6. 管理端 响应公钥质询信息
  7. 被管理端 接收响应信息,远程连接建立
2. 基于密钥连接(免交互,在管理端服务器操作)

第一个历程: 创建密钥对(在远程管理端创建 m01)

ssh-keygen 创建密钥命令
ssh-keygen -t dsa (加密方式的一种,有dsa rsa 等)

第二个历程: 将密钥(公钥信息进行分发给要管理的主机)
shh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.8 (-i 指定公钥文件的存放路径)
以什么用户身份传输
发送成功之后,就不要要使用口令进行登录

实际实例

远程一下测试是否建立过密钥连接

连接状态

此时还没有建立通过密钥连接的方式
创建密钥

ssh-keygen -t dsa
-t 指定加密方式  有dsa  rsa等等
创建密钥对并查看

将密钥分发给要管理的主机

ssh-copy-id -i /root/.ssh/id_dsa root@172.16.1.7
分发密钥

测试,不使用密码就可以连接

测试成功

总结通过密钥连接

  1. 管理端: 创建密钥对,保存好私钥
  2. 管理端: 将公钥进行发送
  3. 被管理端:接收到公钥 保存 ~/.ssh/authorized_keys (600)
    /etc/ssh/sshd_confing
3.如何批量分发秘钥

为了避免大量重复的工作

分发密钥思路 (免交互)
   1. 第一次ssh 连接会有提示yes/ no 的提示
         利用 ssh参数解决 (StrictHostKeyChecking) 'man 一下ssh 在下方可以找到'
         StrictHostKeyChecking 检查功能,分发key的时候,输入 StrictHostKeyChecking=no
   2. 每次连接分发公钥前,都需要输入密码信息
         跳过密码使用 (sshpass)
         yum install -y sshpass 
ssh第一次交互取消成功
yum install -y sshpass
已安装sshpass 使用sshpass

编写脚本

使用for循环
#!/bin/bash
for  ip in {7,8,9}  # 命名一个变量  $ip 变量的值在in 后边指定
do 
echo "sent key to 172.16.1.$ip"
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.$ip -o StrictHostKeyChecking=no &>/dev/null 
# &>/dev/null  将一些没用的信息定向到空
then 

        if [ $? -eq 0 ]       # 如果返回结果等于0 就执行 then 下边命令否则执行 else下边的命令
            then
                echo "分发密钥成功"
            else
                echo "分发密钥失败"
        fi
done 
等于     -eq
大于     -gt
小于     -lt
大于等于 -ge
小于等于 -le
不等于   -ne
4. ssh 配置文件

配置文件常用参数(SSH服务端配置文件:/etc/ssh/sshd_config)

Port 22 SSH服务默认端口号
ListenAddress 0.0.0.0 SSH服务默认监听所有地址

监听地址必须是主机网卡地址

PermitRootLogin yes SSH服务默认允许使用root用户连接

在实际环境中,一般禁止root用户远程连接

PermitEmptyPasswords no SSH服务默认不允许空密码登入

在实际环境中一定禁止用户使用空密码登录

UseDNS no 禁用SSH服务的DNS反向解析
GSSAPIAuthentication no 关闭SSH服务的GSSAPI认证方式

上一篇下一篇

猜你喜欢

热点阅读