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

SSH远程管理服务

1. 远程管理服务知识介绍

# 1.1 SSH远程登录服务介绍说明
SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Working Group)制定;
在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。
SSH是专为远程登录会话和其他网络服务提供的安全性协议。
利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境运维工作中,
绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。

在默认状态下,SSH服务主要提供两个服务功能:
    a 一是提供类似telnet远程联机服务器的服务,即上面提到的SSH服务;
?    b 另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务(vsftp,proftp)。

# 1.2 SSH远程登录服务排错思路
    01. 检查链路是否通畅---ping(icmp协议)/tracert/traceroute
    02. 检查链路是否阻断---将防火墙功能关闭
    03. 检查服务是否开启---ss/netstat -lntup(服务端检查)    /telnet/nmap/nc(客户端检查)

# 远程管理服务对比说明:
# 安装 telnet 客户端软件: yum install -y telnet
# 安装 telnet 服务端软件(备份服务器): yum install -y telnet-server

[[email protected] ~]# yum install -y telnet-server telnet
...
[[email protected] ~]# cat /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
#    unencrypted username/password pairs for authentication.
service telnet
{
    flags        = REUSE
    socket_type    = stream
    wait        = no
    user        = root
    server        = /usr/sbin/in.telnetd
    log_on_failure    += USERID
    disable        = no            # 把 disable 由默认的 yes 改成 no ,表示 telnet 能由 xinetd 服务
}

[[email protected] ~]# /etc/init.d/xinetd restart        # 重启 xinetd 服务
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]
[[email protected] ~]#
# 此时就把 telnet 服务启动了 

Type `help‘ to learn how to use Xshell prompt.
Xshell:\> telnet 10.0.0.41        # 用 telnet 连接远程服务器 (telnet 不能用 root 用户连接;使用 telnet ip 之前要先把 xinetd服务开启)

Type `help‘ to learn how to use Xshell prompt.
Xshell:\> ssh 10.0.0.41            # ssh 连接远程服务器 既可用 root 用户,也可用 普通用户

2. 远程管理服务概念详解

2.1 SSH远程管理服务加密技术
ssh连接登录过程:
①. ssh客户端发(m01主机)出连接请求
②. ssh服务端会发出确认信息,询问客户端你是否真的要连接我
③. ssh客户端输入完成yes,会等到一个公钥信息

[[email protected] /]# cat /root/.ssh/known_hosts
10.0.0.41 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxk0wkLuvRML5GrK8p+EU6yLAvLf5aOsnu2ydGzvn8mXuE4EdhGzGC1h9cwvMYwY7xD47aBRP/q+13T6Jh8/A580m6AaZmagS/OawtcVaseTMJEehysIqPBOD9xqPGOWK5c3vWFcW0yC1rp64axYAbrXgOEX8TddxF4rPAyinOpqMPe1ncF6hY8Zq3VxCDKIFJk//RPpO1eqM8eXLl7P1tLCLYHVvRWdjDQ2k275cPOAXiLr2Wc+KuzQUMAeLV0e/41DtMHHdI8bkrMfMMFXFPR04nZv+uv4DvX7Md/5NoGB6PkH9ozvDyqLFS7Z2m0hpomhqkaM5OtbN6rm+YrJXqQ==
[[email protected] /]# 

④. ssh服务端(如:备份服务器)将公钥信息发送给ssh客户端

[[email protected] ~]# cd /etc/ssh  # 公钥、密钥存放路径
[[email protected] ssh]# ll
total 160
-rw-------. 1 root root 125811 Mar 22  2017 moduli
-rw-r--r--. 1 root root   2047 Mar 22  2017 ssh_config
-rw-------  1 root root   3876 Apr 30 18:43 sshd_config
-rw-------. 1 root root   3879 Mar 22  2017 sshd_config.bak
-rw-------. 1 root root    668 Oct 16  2018 ssh_host_dsa_key
-rw-r--r--. 1 root root    590 Oct 16  2018 ssh_host_dsa_key.pub
-rw-------. 1 root root    963 Oct 16  2018 ssh_host_key
-rw-r--r--. 1 root root    627 Oct 16  2018 ssh_host_key.pub
-rw-------. 1 root root   1675 Oct 16  2018 ssh_host_rsa_key
-rw-r--r--. 1 root root    382 Oct 16  2018 ssh_host_rsa_key.pub
[[email protected] ssh]# cat ssh_host_rsa_key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxk0wkLuvRML5GrK8p+EU6yLAvLf5aOsnu2ydGzvn8mXuE4EdhGzGC1h9cwvMYwY7xD47aBRP/q+13T6Jh8/A580m6AaZmagS/OawtcVaseTMJEehysIqPBOD9xqPGOWK5c3vWFcW0yC1rp64axYAbrXgOEX8TddxF4rPAyinOpqMPe1ncF6hY8Zq3VxCDKIFJk//RPpO1eqM8eXLl7P1tLCLYHVvRWdjDQ2k275cPOAXiLr2Wc+KuzQUMAeLV0e/41DtMHHdI8bkrMfMMFXFPR04nZv+uv4DvX7Md/5NoGB6PkH9ozvDyqLFS7Z2m0hpomhqkaM5OtbN6rm+YrJXqQ==
[[email protected] ssh]# 

⑤. ssh客户端利用密码进行登录

加密技术分为v1和v2两个版本
sshv1版本不会经常更换锁头和钥匙,因此会有安全隐患
sshv2版本会经常更换锁头和钥匙,因此提高了远程连接安全性

3. SSH远程管理服务认证类型

# 基于密钥方式实现远程登录
①. ssh管理服务器(m01主机)上创建密钥对信息(公钥 私钥)
②. ssh管理服务器上将公钥发送给被管理服务器(如 备份服务器)
③. ssh管理服务器向被管理服务器发送连接请求
④. ssh被管理服务器向管理服务器发送公钥质询
⑤. ssh管理服务器处理公钥质询请求,将公钥质询结果发送给被管理主机
⑥. ssh被管理服务器接收公钥质询响应信息,从而确认认证成功
⑦. ssh管理服务端可以和被管理服务端建立基于密钥连接登录

4. 基于密钥登录方式部署流程

# 第一个里程:在管理主机(如 m01主机)上创建密钥对信息
[[email protected] ~]# ssh-keygen -t dsa                                 <-- 创建密钥对命令 -t dsa表示指定密钥对加密类型
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):      <-- 确认私钥文件所保存的路径
/root/.ssh/id_dsa already exists.
Overwrite (y/n)? y                                            <-- 如果已经存在了密钥对信息,是否进行覆盖
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:
46:c8:21:b9:99:6e:0c:59:39:66:38:7a:97:29:51:76 [email protected]
The key‘s randomart image is:
+--[ DSA 1024]----+
|   o+oE          |
|  +.B+ o         |
| . B Bo .        |
|. = B  .         |
| . *    S        |
|    +  .         |
|   .             |
|                 |
|                 |
+-----------------+

# 第二个里程:将管理主机上公钥信息发送给被管理主机
[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31   # 将管理主机上的 公钥 发送给 被管理主机上;如果管理主机想用内网连接被管理主机,则 ip 要写成内网ip,反之则用 外网ip;此时是用root身份分发公钥,所以也只能用root身份进行管理;如果想让普通用户如 oldboy 进行管理,在ip前加上 普通用户名
The authenticity of host ‘172.16.1.31 (172.16.1.31)‘ can‘t be established.
RSA key fingerprint is 22:07:4d:36:3c:5e:eb:46:80:a2:ef:40:45:8c:93:46.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘172.16.1.31‘ (RSA) to the list of known hosts.
[email protected]172.16.1.31‘s password:
Now try logging into the machine, with "ssh ‘172.16.1.31‘", and check in:

  .ssh/authorized_keys    # 公钥文件保存在了  172.16.1.31 主机 root 用户家目录下的  .ssh/ 目录下

to make sure we haven‘t added extra keys that you weren‘t expecting.

[[email protected] ~]# 

# 公钥文件保存在了  172.16.1.31 主机 root 用户家目录下的  .ssh/ 目录下
[[email protected] ~]# cd /root/.ssh/
[[email protected] .ssh]# ll
total 4
-rw------- 1 root root 598 May 24 14:17 authorized_keys
[[email protected] .ssh]# 

# 第三个里程:进行远程管理测试(基于密钥的方式进行远程管理)
[[email protected] ~]# ssh 172.16.1.31            # 不需要密码直接登陆被管理主机
Last login: Fri May 24 14:15:34 2019 from 10.0.0.253
[[email protected] ~]# 

[[email protected] ~]# ssh 172.16.1.31 uptime        # 不登陆被管理主机 查看被管理主机的状况
 14:31:30 up 26 min,  1 user,  load average: 0.00, 0.00, 0.00
[[email protected] ~]#

5.  SSH配置文件

# SSH服务端配置文件: /etc/ssh/sshd_config
# SSH客户端配置文件: /etc/ssh/ssh_config

# SSH服务端配置文件信息说明(/etc/ssh/sshd_config)
Port 52113                     <- 修改ssh服务端口号信息 (端口号要在1024之后);修改端口号的连接方式: ssh -p端口号 ip
ListenAddress 0.0.0.0        <- 指定哪个地址建立网络连接:0.0.0.0 表示全部网卡都处于被监听状态,即都可做出响应;10.0.0.31 表示只有该网卡处于被监听状态;主要作用提升网络连接安全性
                                PS:监听地址只能配置为服务器网卡上拥有的地址
PermitRootLogin no             <- 是否允许root用户远程登陆(企业环境中一般设置为 no )
PermitEmptyPasswords no         <- 是否允许空密码
UseDNS no                    <- 是否进行DNS反向解析(提升ssh远程连接效率)
GSSAPIAuthentication no         <- 是否进行远程GSSAPI认证(提升ssh远程连接效率)

# 修改完配置文件后要重启 ssh 服务端服务: /etc/init.d/sshd restart

6. SSH远程传输方法 --- sftp

# 命令如: sftp -oPort=52113 [email protected]

# sftp常用操作命令总结
    bye             Quit sftp                             <-- 表示退出sftp传输模式
    cd path         Change remote directory to ‘path‘     <-- 改变远程目录信息
    pwd             Display remote working directory      <-- 显示远程主机当前目录信息
    lcd path        Change local directory to ‘path‘      <-- 改变本地目录路径信息
    lpwd            Print local working directory         <-- 输出本地目录路径信息
    get [-P] remote-path [local-path]
                    Download file                         <-- 下载文件命令
    put [-P] local-path [remote-path]                     <-- 上传文件命令
                    Upload file

原文地址:https://www.cnblogs.com/neozheng/p/10924898.html

时间: 2024-08-11 03:09:06

Linux(11):期中架构(3)--- SSH远程管理服务 & ansible 批量管理服务的相关文章

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT、桥接和Host-only]

Windows和linux虚拟机之间联网实现SSH远程连接以及VMware的3种网络模式[NAT.桥接和Host-only] 作者:天齐 一.Windows和linux虚拟机之间联网实现SSH远程连接 假如我们要给主机名为mini1的虚拟机配置ip地址,需要以下几个步骤: 在linux上查看ip地址,如果linux服务器有ip地址,让它的ip地址和windows的ip地址在同一个网段,它们之间才能联网.在linux上查看ip地址的命令为"ifconfig": 发现eth0网卡没有配置i

ansible批量管理远程服务器

使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器:  2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全一致,一般访问通过环境变量中定义的变量路径访问:  比如在.bashrc中定义$app_path=/opt/app/bin 最终选择ansible,使用这个自动化运维工具可以满足我的需求:  下面介绍下对于我这种场景需要使用的ansible的主要模块:  关于ansible是什么以及安装配置请自行

使用ansible批量管理远程服务器

使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器: 2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全一致,一般访问通过环境变量中定义的变量路径访问: 比如在.bashrc中定义$app_path=/opt/app/bin 最终选择ansible,使用这个自动化运维工具可以满足我的需求: 下面介绍下对于我这种场景需要使用的ansible的主要模块: 关于ansible是什么以及安装配置请自行百度:

免密码交互方式+ansible批量管理服务介绍

介绍了ssh服务 1) 远程连接加密传输数据协议,实现远程连接登录,默认端口222)ssh远程连接原理依赖于锁头(公钥)和钥匙(私钥),实现远程加密连接3)ssh基于秘钥远程登录原理a 管理服务器创建秘钥対,将公钥传输发送给给管理端b 管理端请求与被管理端建立连接c 被管理向管理端发送公钥质询d 管理端处理质询信息,实现管理与被管理端免密码交互4)基于ssh协议相关命令ssh scp sftp netstat -lntup |egrep sshd 查看ssh端口 1.1 部署ssh+key (免

好用的管理云服务器批量管理软件

好用的管理云服务器批量管理工具 如今远程已不是什么新鲜事,在学习和工作方便我们都会经常用到.很多人现在都选择使用远程桌面连接工具,那么你选对了工具了吗? 这里我给大家推荐一款专业的远程桌面连接工具——IIS7远程桌面连接工具(http://yczm.iis7.com/?lxmd). 一款电脑远程监控的工具,IIS7远程桌面管理是一款专业的远程桌面连接软件,无需安装.操作简单方便.完美的界面设计.强大的监控功能.稳定的系统平台,满足了用户实现远程桌面连接的需求. 进入云服务: 1.分组功能. 2.

Linux中ansible批量管理软件部署及剧本编写

服务器版本信息: Centos6.9 [[email protected] ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux ansible软件介绍 ansible是一个基于Python开发的自动化运维工具! 其功能实现基于SSH远程连接服务! ansible可以实现批量系统配置.批量软件部署.批量文件拷贝.批量运行命令等

通过ansible批量管理Linux服务器:配置Inventory和批量执行命令

ansible是一款比较新的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1).连接插件connection plugins:负责和被监控端实现通信:(2).host inventory:指定操作的主机,是一个配

如何开启远程桌面连接 服务器批量管理

远程桌面是微软公司为了便于网络管理员管理维护服务器推出的一项服务.从windows 2000 server版本开始引入,网络管理员时候远程桌面连接器连接到网络任意一台开启了远程桌面控制功能的计算机上,就像是自己操作该计算机一样,运行程序,维护数据库等.远程桌面采用的是一种类似TELNET的技术,它是从TELNET协议发展而来的,通俗的讲远程桌面就是图形化的TELNET.那么如何批量管理我们的多台服务器呢?下面向大家介绍一款远程桌面连接工具——IIS7远程桌面连接工具. 查看地址:iis7远程桌面

如何远程连接服务器 服务器批量管理

远程桌面是微软公司为了便于网络管理员管理维护服务器推出的一项服务.从windows 2000 server版本开始引入,网络管理员时候远程桌面连接器连接到网络任意一台开启了远程桌面控制功能的计算机上,就像是自己操作该计算机一样,运行程序,维护数据库等.远程桌面采用的是一种类似TELNET的技术,它是从TELNET协议发展而来的,通俗的讲远程桌面就是图形化的TELNET.那么如何批量管理我们的多台服务器呢?下面向大家介绍一款远程桌面连接工具——IIS7远程桌面连接工具. 查看地址:iis7远程桌面