第6章 远程管理的介绍

6.1 服务的概念介绍

6.1.1 ssh和telnet服务的相同和不同点

ssh:

  • 服务端口号为22
  • 在数据传输的时候是加密的传输
  • 一般在互联网中使用,可以使用root账号进行登录

telnet:

  • 服务端口号为23
  • 在数据的传输的时候是明文传输
  • 一般在局域网中使用,不可以使用root账号进行登录

6.2 远程服务密码连接的原理

  • 客户端向服务端发送请求建立的连接
  • 服务端向客户端发送确认是建立连接吗(yes/no)
  • 客户端在给服务端发送确认建立连接(yes),并且接收到一个公钥文件,保存到(~/.ssh/known_hosts)文件中
  • 客户端进行密码确认的操作
  • 服务端向客户端发送密码的确认消息,成功则建立连接

6.3 远程服务连接的方式

6.3.1 密码连接

密码连接有风险,第一,密码基本是固定的形式的;第二:密码的难易由密码的复杂度来决定的

6.3.2 密钥进行连接

6.3.2.1 秘钥连接的原理过程

  • 客户端生成一个密钥对信息
  • 客户端将公钥发送给服务端
  • 客户端使用远程连接命令发送,并且请求建立连接
  • 服务端接收客户端的请求,并且发送确认请求
  • 客户端选择(yes),接着会生成一个公钥,保存到~/.ssh/known_hosts文件中
  • 服务端会发送公钥质询信息(验证客户端有私钥可以解密我这个公钥的文件内容吗)
  • 客户端接收质询信息,并且使用私钥进行解密
  • 客户端将结果发送给服务端
  • 连接建立成功

6.3.2.2 管理端创建密钥进行连接

  • -t                        指定密钥的类型(rsa,dsa)
  • -f                        指定密钥的文件名称
  • -C                        指定公钥的内容备注
  • -P                        指定旧的私钥密码
  • -N                        指定新的私钥密码
  • -q                        默认不进行输出

[root@nfs01 ~] # ssh-keygen -t dsa                    密钥创建

Generating public/private dsa key pair.

Enter file in which to save the key (/root/.ssh/id_dsa):             保存密钥的地方

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_dsa.            保存的公钥路径

Your public key has been saved in /root/.ssh/id_dsa.pub.            保存的私钥路径

The key fingerprint is:

SHA256:P4YoWQkaZ2j0Modev90czdp60WWVk9in08MdA0jr44Y root@nfs01

The key's randomart image is:

+---[DSA 1024]----+

| . ....+ o|

| . + ... Bo|

| B B . .oB|

| o X o . .o oo=|

| o + S .oo. +.|

| o + =o+o . |

| o o oEBo.. |

| . ..o. |

| .. |

+----[SHA256]-----+

You have new mail in /var/spool/mail/root

6.3.2.3 分发公钥

6.3.2.3.1 分发公钥的原理
  • 管理端和远程服务器进行连接
  • 连接的时候会将公钥发送给远程服务端的/root/.ssh/ authorized_keys的文件里,并且权限为600
  • 在连接建立的时候,ssh服务会加载authorized_keys的文件里面的密钥信息来建立连接
6.3.2.3.2 分发公钥的操作步骤

[root@nfs01 .ssh] # ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.41            将公钥发送给172.16.1.41

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_dsa.pub"

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

root@172.16.1.41's password:                 输入172.16.1.41的密码

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'root@172.16.1.41'"

and check to make sure that only the key(s) you wanted were added.

[root@nfs01 .ssh] # ssh 172.16.1.41                    远程连接ssh 172.16.1.41

Last login: Sun Oct 27 20:44:18 2019 from 10.0.0.1

[root@backup ~] #                发现不需要密码就可以连接成功

6.4 利用脚本进行批量的分发

6.4.1 密码和端口都是固定的情况下

for i in 41 7

do

sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub -o StrictHostKeyChecking=no 172.16.1.$i

if [ $? -eq 0 ]

then

echo "172.16.1."$i"发送成功"

else

echo "172.16.1."$i"发送失败"

fi

done

6.4.1.1 ssh批量分发公钥的思路解析

6.4.1.1.1 手动分发公钥

ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.7

6.4.1.1.2 解决需要进行密钥分发的确认信息

ssh 参数-o里面可以指定StrictHostKeyChecking=no来忽略确认,直接将公钥发送过来就可以

ssh -o StrictHostKeyChecking=no        忽略确认,直接将公钥发送过来就可以

6.4.1.1.3 解决输入密码的困境

使用sshpass来忽略

sshpass -p123456                免交互来指定你输入的密码

6.4.1.1.4 将公钥发送的前几个过程连接起来

sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa -o StrictHostKeyChecking=no 172.16.1.7        单个用户直接发密钥的思路

6.4.2 端口和密码不固定的情况下

[root@m01 scripts] # cat different.txt                编写定义IP 密码端口的配置文件

172.16.1.31 123456 52113

172.16.1.41 654321 22

172.16.1.7 123456 22

[root@m01 scripts] # cat different_miyao_fenfa.sh

#!/bin/bash

cat /server/scripts/different.txt|\

while read line                        循环读取

do

IP_INFO="$(echo $line|awk '{print $1}')"                读取第一行,使用awk进行分割,取出IP

PASS_INFO="$(echo $line|awk '{print $2}')"            读取第二行,使用awk进行分割,取出密码

PORT_INFO="$(echo $line|awk '{print $3}')"            读取第三行,使用awk进行分割,取出端口

sshpass -p$PASS_INFO ssh-copy-id -i /root/.ssh/id_dsa.pub -o StrictHostKeyChecking=no $IP_INFO -p $PORT_INFO &>/dev/null                将IP,密码,端口依次赋值给变量下面进行调用

if [ $? -eq 0 ]

then

echo "Public key distribution success"

echo ""

else

echo "Public key distribution faild"

echo ""

fi

done

[root@m01 scripts] #

6.5 远程服务配置文件

  • 17 #Port 22                            这个是指定ssh端口配置
  • 19 #ListenAddress 0.0.0.0                指定监听的IP地址(这个地址只能是服务器网                                    卡本身拥有的)
  • 64 #PermitEmptyPasswords no            不允许空密码进行连接
  • 38 #PermitRootLogin yes                        禁止root登录系统
  • 79 GSSAPIAuthentication no                    关闭GSSAPI认证,加快ssh的连接
  • 23 UseDNS no                                关闭DNS反向解析 加快SSH连接效率
  • 47 AuthorizedKeysFile .ssh/authorized_keys        存放发过来的公钥认证文件

6.6 远程访问防范入侵方案

  • 使用密钥进行登录系统,别使用密码进行登录
  • 解决ssh安全的问题
    • 防火墙将ssh服务关闭,指定源IP地址限制(只对一些信任公网和私网可以访问)
    • 对服务器的指定IP进行监听(监听的端口只能是网卡里面拥有的)
  • 尽量不给服务器的外网IP(负载均衡是需要外网IP的)
  • 尽量最小化的安装系统
  • 把一些重要的文件进行指纹验证
  • 将一些重要的文件进行加锁来解决

ssh远程管理服务的介绍的更多相关文章

  1. 五.ssh远程管理服务

    01. 远程管理服务知识介绍 1) SSH远程登录服务介绍说明 SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Working Group)制定: ...

  2. Linux(11):期中架构(3)--- SSH远程管理服务 & ansible 批量管理服务

    SSH远程管理服务 1. 远程管理服务知识介绍 # 1.1 SSH远程登录服务介绍说明 SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Worki ...

  3. SSH远程管理服务实战

    目录 SSH远程管理服务实战 1.SSH基本概述 2.SSH相关命令 3.Xshell连接不上虚拟机 4.scp命令 5.sftp命令 6.SSH验证方式 7.SSH场景实践 8.SH安全优化 9.交 ...

  4. Linux系统学习 八、SSH服务—SSH远程管理服务

    1.SSH简介 ssh(安全外壳协议)是Secure Shell的缩写,是建立在应用层和传输层基础上的安全协议.传输的时候是经过加密的,防止信息泄露,比telnet(明文传递)要安全很多. ftp安装 ...

  5. linux运维、架构之路-SSH远程管理服务

    一.SSH服务功能介绍 1.远程登录管理 提供类似telnet远程联机服务器的服务,即上面提到的SSH服务 2.远程传输文件 是类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供 ...

  6. Linux下 SSH远程管理服务

    第1章 SSH基本概述 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定 在进 ...

  7. 6. SSH远程管理服务实战

    1. SSH基本概念? ssh是一个应用层安全协议 2.SSH主要的功能是? 实现远程登录, 数据传输过程中进行加密. 钉钉(澡堂模式) 远程登录: ssh telnet 3.SSH与Telnet之间 ...

  8. 6、SSH远程管理服务实战

    1.SSH基本概述 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全.那SSH服务主要功能有哪些呢? 1.提供远程连接服务器的服务. 2.对传输 ...

  9. Linux-SSH远程管理服务实战

    figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...

随机推荐

  1. C++中对C的扩展学习新增语法——函数重载

    函数重载 1.函数重载语法 1.同一个作用域(全局作用域.命名空间作用域.类作用域) 2.参数个数不同 3.参数类型不同 4.参数顺序不同 代码实现: 当函数名字一样的时候,通过参数类型.参数个数.参 ...

  2. Test Complete 的自动化测试 --- 三角形

    Test Complete 的自动化测试 --- 三角形 PS:工具:Test Complete , OS:win 10 这里做三角形的测试与上一篇博客做计算器的测试大致一样,都是对.exe的执行文件 ...

  3. Apache中AllowOverride的详细配置使用

    我们通常利用Apache的rewrite模块对URL进行重写,rewrite规则会写在 .htaccess 文件里.但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.hta ...

  4. 100天搞定机器学习|Day56 随机森林工作原理及调参实战(信用卡欺诈预测)

    本文是对100天搞定机器学习|Day33-34 随机森林的补充 前文对随机森林的概念.工作原理.使用方法做了简单介绍,并提供了分类和回归的实例. 本期我们重点讲一下: 1.集成学习.Bagging和随 ...

  5. C语言I博客作业09

    问题 答案 这个作业的属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-4/homework/10034 我 ...

  6. 反汇编分析NSString,你印象中的NSString是这样吗

    我们先来定义三个NSString -(void) testNSString { NSString* a = @"abc"; NSString* b = [NSString stri ...

  7. python进程与线程的操作

    进程操作: # project :Python_Script # -*- coding = UTF-8 -*- # Autohr :XingHeYang # File :processTest.py ...

  8. SpringBoot学习(六)—— springboot快速整合RabbitMQ

    目录 Rabbit MQ消息队列 简介 Rabbit MQ工作模式 交换机模式 引入RabbitMQ队列 代码实战 Rabbit MQ消息队列 @ 简介 优点 erlang开发,并发能力强. 社区活跃 ...

  9. C#变量---xdd

    cshape(c#)学习笔记 1. string str1=Console.ReadLine();//键盘输入的默认为字符串 2.  Console.WriteLine('你的成绩是'+a+'分'); ...

  10. Appium自动获取 Android 设备 id 和包名等信息(python)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhusongziye/article/d ...